我在这里做错了什么?我期望实例始终是平等的,永远不会是不平等的。但事实证明,实例是平等的和不平等的。
$ cat test.py
class MyClass(object):
def __eq__(self, other):
return True
if __name__ == '__main__':
a = MyClass()
b = MyClass()
if a == b:
print "Equal"
if a != b:
print "Unequal"
$ python --version
Python 2.7.6
$ python test.py
Equal
Unequal
答案 0 :(得分:3)
问题是!=
不会调用__eq__
并将其反转。如果您想支持!=
,那么您还需要实施__ne__
。
a和b是不同的对象,因此调用默认对象。__ne__
方法,并报告True。