我有一个类,用几个字段来表示一些东西。当这个类的实例列表被排序时,我希望它们按照特定的顺序排序(从每个实例中获取特定的键)。我可以做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
的实例。
签出http://wiki.python.org/moin/HowTo/Sorting/
您希望重写类中的
__lt__
,以便内置的sort
函数按您描述的方式工作。相关问题 更多 >
编程相关推荐