您需要提供在Python 3订货丰富的比较方法,这是
__lt__,
__gt__,
__le__,
__ge__,
__eq__,和
__ne__。另请参阅:PEP
207-丰富的比较。
__cmp__是 不是 不再使用。
更具体地说,
__lt__以
self和
other作为参数,并且需要返回是否
self小于
other。例如:
class Point(object): ... def __lt__(self, other): return ((self.x < other.x) and (self.y < other.y))
(这不是明智的比较实现,但是很难说出您要做什么。)
因此,如果您有以下情况:
p1 = Point(1, 2)p2 = Point(3, 4)p1 < p2
这等效于:
p1.__lt__(p2)
这将返回
True。
__eq__``True如果点相等
False则返回,否则返回。其他方法类似地工作。
如果使用
functools.total_ordering装饰器,则只需实现例如
__lt__和
__eq__方法:
from functools import total_ordering@total_orderingclass Point(object): def __lt__(self, other): ... def __eq__(self, other): ...



