看看下面的例子:爲什麼Python的!=運算符認爲參數相同並且不等於同一時間?
>>> class C(object):
... def __init__(self, p):
... self.p = p
... def __eq__(self, o):
... return True
...
>>> C(1) is C(2)
False
>>> C(1) == C(2)
True
>>> C(1) != C(2)
True # <- Why?!?
所以,現在的兩個對象是相等的,並在同一時間不等於。我雖然這兩個行動是反對?!
是否有任何理由不會僅僅在``__eq__```上覆蓋``__cmp__``? – 2016-03-04 18:56:59
`__cmp__`是一個較老的Python特性(`__eq__`優先),現在已經從Python 3中刪除,所以現在不應該在任何Python代碼中使用它:https://docs.python.org/3.0/whatsnew /3.0.html#ordering-comparisons – Cas 2017-06-11 12:29:02