class L(object):
def __eq__(self, other):
print 'invoked L.__eq__'
return False
class R(object):
def __eq__(self, other):
print 'invoked R.__eq__'
return False
left = L()
right = R()
Run Code Online (Sandbox Code Playgroud)
有了这个代码,左侧得到在比较的第一枪,作为记录在数据模型:
>>> left == right
invoked L.__eq__
False
Run Code Online (Sandbox Code Playgroud)
但是如果我们在第6行稍作修改(其他一切都相同):
class R(L):
Run Code Online (Sandbox Code Playgroud)
现在,右侧比较可以获得第一杆.
>>> left == right
invoked R.__eq__
False
Run Code Online (Sandbox Code Playgroud)
这是为什么?它在哪里记录,以及设计决策的原因是什么?