(第五篇)富比较__gt__、__ge__、__lt__、__le__、__eq__、__ne__

发布时间 2023-04-03 15:07:46作者: hechengQAQ

摘要:这些方法被称为“富比较”方法,是因为它们可以用于实现同类对象进行“比较”。这些方法的触发机制是在实例对象之间进行比较时自动调用。例如,如果有两个实例对象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

所以要想进行对象之间的比较,可以重新这些"富比较方法"。