Tome el ejemplo siguiente:¿Por qué el operador! = De Python piensa que los argumentos son iguales y no iguales al mismo tiempo?
>>> class C(object):
... def __init__(self, p):
... self.p = p
... def __eq__(self, o):
... return True
...
>>> C(1) is C(2)
False
>>> C(1) == C(2)
True
>>> C(1) != C(2)
True # <- Why?!?
Así que ahora los dos objetos son iguales y no igual, al mismo tiempo. ¡¿Pensé que las dos operaciones son opuestas ?!
¿Hay alguna razón para no anular '' '__cmp__''' sobre' '' __eq__'''? –
'__cmp__' es una función anterior de Python (' __eq__' tiene prioridad) y ahora se ha eliminado de Python 3, por lo que realmente no debería usarse en ningún código Python ahora: https://docs.python.org/3.0/whatsnew /3.0.html#ordering-comparisons – Cas
"Eso fue cierto para Python 2, pero en Python 3 eso no es un buen consejo, porque una implementación predeterminada' __ne__' se hereda de la clase de objeto, y rara vez es necesario anularla. " - Fluent Python – 0TTT0