类实例都是相等和不相等的

时间:2014-10-30 17:37:16

标签: python python-2.7 operator-overloading equality

我在这里做错了什么?我期望实例始终是平等的,永远不会是不平等的。但事实证明,实例是平等的和不平等的。

$ 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

1 个答案:

答案 0 :(得分:3)

问题是!=不会调用__eq__并将其反转。如果您想支持!=,那么您还需要实施__ne__

a和b是不同的对象,因此调用默认对象。__ne__方法,并报告True。