Mi chiedevo il motivo di avere un operatore non uguale in python
.Perché c'è un operatore non uguale in python
i seguenti snipped:
class Foo:
def __eq__(self, other):
print('Equal called')
return True
def __ne__(self, other):
print('Not equal called')
return True
if __name__ == '__main__':
a = Foo()
print(a == 1)
print(a != 1)
print(not a == 1)
uscite:
Equal called
True
Not equal called
True
Equal called
False
non fa questo in realtà invitare un sacco di problemi da potenzialmente dicendo:
A == B and A != B
possono essere corrette al contemporaneamente. Inoltre questo introduce un potenziale trabocchetto quando si dimentica di implementare __ne__
.
Ottimizzazione? E questo è contro i contratti. –
* "Non ci sono relazioni implicite tra gli operatori di confronto.La verità di' x == y' non implica che 'x! = Y' sia falso.Pertanto, quando si definisce' __eq __() ', si dovrebbe anche definire' __ne __() 'in modo che gli operatori si comportino come previsto." * – CoryKramer
@CoryKramer Da dove viene? – vmonteco