Ich frage mich über den Grund für einen ungleich Operator in python
.Warum gibt es einen nicht gleich Operator in Python
Die snipped folgende:
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)
Ausgänge:
Equal called
True
Not equal called
True
Equal called
False
Ist das nicht eigentlich eine Menge Ärger einladen, indem möglicherweise sagen:
A == B and A != B
kann die richtige sein gleiche Zeit. Darüber hinaus birgt dies eine potentielle Falle, wenn man vergisst, __ne__
zu implementieren.
Optimierung? Und das ist gegen Verträge. –
* "Es gibt keine impliziten Beziehungen zwischen den Vergleichsoperatoren. Die Wahrheit von' x == y 'impliziert nicht, dass' x! = Y 'falsch ist. Dementsprechend sollte man bei der Definition von '__eq __()' auch 'definieren __ne __() 'damit sich die Operatoren wie erwartet verhalten." * – CoryKramer
@CoryKramer Woher kommt es? – vmonteco