class Foo: def __init__(self, key): self.key = key def __cmp__(self, other): return cmp(self.key, other.key)如此Foo类型的object间的大小比较就可以用key这个域的值来实现.
在Python 3以后, __cmp__ 方法被移除了. 实现Foo object间的大小比较, 需要用functools.total_ordering修饰这个class以后, 实现__eq__方法以及__lt__(或者__lt__, __le__, __gt__, __ge__中的任意一个).
import functools @functools.total_ordering class Foo: def __init__(self, key): self.key = key def __eq__(self, other): return self.key == other.key def __lt__(self, other): return self.key < other.key
No comments:
Post a Comment