十七. __eq__

十七. __eq__

  • 触发条件 : 在两个对象进行 == 比较值的时候触发 __eq__() 的执行, 在该方法内部可以自定义比较规则
print(12 == [1,2,3])    # False
print("w" == (2,3,5,))  # False
l1 = [1,2,3]
l2 = [1,2,3]
print(l1 == l2)         # True (只比较值, 不比较ID)
  • 自定义规则示例
class Str:
    def __init__(self,name):
        self.name = name

    def __eq__(self, other):  # self(本身对象),other(另一个对象)
        if self.name == other.name:  # 只要名字相同,我就认为相同
            return True
        else:
            return False

p1 = Str("黑子")
p2 = Str("黑子")
p3 = Str("白子")

print(p1 == p2)  # True
print(p1 == p3)  # False

posted @ 2021-01-05 22:29  给你骨质唱疏松  阅读(157)  评论(0编辑  收藏  举报