十七. __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