Como Python no proporciona versiones izquierda/derecha de sus operadores de comparación, ¿cómo decidir qué función debe llamar?¿Cómo se maneja __eq__ en Python y en qué orden?
class A(object):
def __eq__(self, other):
print "A __eq__ called"
return self.value == other
class B(object):
def __eq__(self, other):
print "B __eq__ called"
return self.value == other
>>> a = A()
>>> a.value = 3
>>> b = B()
>>> b.value = 4
>>> a == b
"A __eq__ called"
"B __eq__ called"
False
Esto parece llamar a ambos __eq__
funciones. Solo estoy buscando el árbol de decisión oficial.
toda la razón. Y en resumen, esas pruebas probablemente deberían ser "return self.value == other.value". –
Gracias Ned! Just Some Guy: depende de lo que estás buscando. Por ejemplo, supongamos que quiero: a == 3 y a == b para que ambos sean verdaderos (con b.value cambiado a 3). – PyProg