如何在 Python 中重载比较运算符?


Python 有魔术方法来定义运算符的重载行为。可以通过为 __lt__、__le__、__gt__、__ge__、__eq__ 和 __ne__ 魔术方法提供定义来重载比较运算符(<、<=、>、>=、== 和 !=)。 

以下程序重载 == 和 >= 运算符以比较 distance 类的对象。

class distance:
      def __init__(self, x=5,y=5):
            self.ft=x
            self.inch=y

      def __eq__(self, other):
             if self.ft==other.ft and self.inch==other.inch:
                  return "both objects are equal"
             else:
                  return "both objects are not equal"

       def __ge__(self, other):
                 in1=self.ft*12+self.inch
                 in2=other.ft*12+other.inch
                 if in1>=in2:
                    return "first object greater than or equal to other"
                  else:
                    return "first object smaller than other"

d1=distance(5,5)
d2=distance()
print (d1==d2)
d3=distance()
d4=distance(6,10)
print (d1==d2)
d5=distance(3,11)
d6=distance()
print(d5>=d6)

上述程序的结果显示了 == 和 >= 比较运算符的重载使用

both objects are equal
both objects are equal
first object smaller than other

更新于:2020 年 3 月 2 日

13K+ 次浏览

开启你的 职业生涯

完成该课程进行认证

开始学习
广告
© . All rights reserved.