__ne__是否使用重写的__eq__?

dor*_*mon 6 python comparison equality

假设我有以下程序:

class A(object):                                                                                                                                                                                                                                                              
    def __eq__(self, other):
        return True

a0 = A() 
a1 = A() 
print a0 != a1
Run Code Online (Sandbox Code Playgroud)

如果你用Python运行它的输出是True.我的问题是

  1. __ne__方法未实现,Python是否属于默认方法?
  2. 如果Python落在默认方法上以确定两个对象是否相等,那么它是否应该调用__eq__然后否定结果?

Ami*_*ory 12

来自文档:

比较运算符之间没有隐含的关系.事实x==y并非暗示这x!=y是错误的.因此,在定义时 __eq__(),还应该定义__ne__()操作符将按预期运行.

  • @dorafmon:不,因为默认实现不参考`__eq__`,它只返回`self is not other`. (3认同)