>>> class Yeah(object):
... def __eq__(self, other):
... return True
...
>>> class Nah(object):
... def __eq__(self, other):
... return False
...
>>> y = Yeah()
>>> n = Nah()
>>> y == n
True
>>> n == y
False
左傢伙勝出,因爲當python2看到x == y
它試圖x.__eq__(y)
先過比較豐富的運營商更多的控制。獲得在python2
有什麼辦法可以修改Nah
這樣他就會贏得兩次?
我的用例正在是這樣的:
class EqualsAnyDatetime(object):
def __eq__(self, other):
return isinstance(other, datetime)
這只是工作在python3因爲real_datetime.__eq__(random_other_thing)
提高NotImplemented
,讓對方在比較了一槍。在python2我似乎無法得到這個想法的工作。
實際上,平等應該是對稱的。 –
當然應該。這就是爲什麼我想'any_datetime = EqualsAnyDatetime()'在雙方工作,而不僅僅是左側工作。 – wim
@wim你是否需要'Nah'中的'__eq__',如果不是,那麼從'Nah'中刪除''y == n'和'n == y'中的函數。 – nu11p01n73R