>>> 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