如何在Python中创建可排序的数据类型?

2024-10-01 09:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,用几个字段来表示一些东西。当这个类的实例列表被排序时,我希望它们按照特定的顺序排序(从每个实例中获取特定的键)。我可以做list.sort(key=Classname.sortKey)并定义一个sortKey方法,但我宁愿做list.sort()并让它解决。我想我可以通过重写__cmp__来实现这一点。但是,当我与不是我的数据类型的内容进行比较时,我该怎么做?我觉得。。。

def __cmp__(self, o):
    if isinstance(o, MyClass):
        return cmp(self.sortKey(), o.sortKey())
    return object.__cmp__(self, o) ##**wrong

但那倒是管用。我不在乎它们在异类列表中采用什么顺序。我只想返回0,但是像MyClass(...) == x这样的东西总是正确的,对于任何x而不是MyClass的实例。


Tags: 实例方法keyself列表return定义排序