您可以myclass使用函数的key参数对数组进行排序sorted:
sortedlist = sorted(myclasses, key=lambda obj: obj.myproperty)
Run Code Online (Sandbox Code Playgroud)
有没有办法为我们的班级定义自然顺序?也许一些神奇的方法让我们每次都不必传入密钥?
例如,
class myclass:
def __init__(self,a,b):
self.key1 = a
self.key2 = b
def __sortkey__(self):
return self.key2
Run Code Online (Sandbox Code Playgroud)
或者,如果我们定义,它会自然地起作用__le__吗?
Dou*_*gal 15
此外__cmp__,你还可以用所谓的"富比较符"这样做__eq__,__le__,__lt__,__gt__,和__ge__.您可以functools.total_ordering在2.7 +/3.1 +中使用类装饰器,而不是定义所有这些.__cmp__已经消失在3.x.
我会通过覆盖来做到这一点__cmp__
class myclass:
def __init__(self,a,b):
self.key1 = a
self.key2 = b
def __cmp__(self, other):
return cmp(self.key2, other.key2)
Run Code Online (Sandbox Code Playgroud)
更新:在 python3 中,__cmp__已经消失了。
改用__lt__