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()
Con questo codice, lato sinistro ottiene il primo colpo a confronto, come documented nel modello di dati:pitone uguaglianza precedenza
>>> left == right
invoked L.__eq__
False
Ma se facciamo una piccola modifica sulla linea 6 (tutto il resto del stessa):
class R(L):
Ora il lato destro viene ad avere il primo colpo a confronto.
>>> left == right
invoked R.__eq__
False
Perché è quello? Dove è documentato e qual è la ragione della decisione di progettazione?