摘要:这些方法被称为“富比较”方法,是因为它们可以用于实现同类对象进行“比较”。这些方法的触发机制是在实例对象之间进行比较时自动调用。例如,如果有两个实例对象a和b,当执行a < b时,Python会自动查找a的类定义中是否实现了__lt__方法,如果有,则调用该方法进行比较。
一、__gt__、__ge__
分别调用 >、>= 符号时触发
二、__lt__、__le__
分别调用 <、<= 时触发
三、__eq__、__ne__
分别调用 ==、!=时触发
四、示例
class Point(object): def __init__(self, x,y): self.x = x self.y = y def area(self): return self.x*self.y def __lt__(self, other): return self.area() < other.area() def __gt__(self, other): return self.area() > other.area() def __le__(self, other): return self.area() <= other.area() def __ge__(self, other): return self.area() >= other.area() def __eq__(self, other): return self.area() == other.area() def __ne__(self, other): return self.area() != other.area() p1 = Point(2,2) p2 = Point(1,1) print(p1 < p2) # True ->print(p1.__lt__(p2)) print(p1 > p2) # False print(p1 <= p2) # True print(p1 >= p2) # False print(p1 == p2) # False print(p1 != p2) # True
所以要想进行对象之间的比较,可以重新这些"富比较方法"。