Ich habe mich gefragt, warum in python
ein ungleicher Operator ist.
Folgendes wurde abgeschnitten:
%Vor%Ausgänge:
%Vor%Bringt das nicht viel Ärger mit sich, indem man sagt:
%Vor% kann gleichzeitig korrekt sein. Darüber hinaus führt dies zu einer potenziellen Fallstricke, wenn Sie vergessen, __ne__
zu implementieren.
Je nach den Bedürfnissen gibt es Fälle, in denen Gleichheit und Ungleichheit nicht entgegengesetzt sind; In der überwiegenden Mehrzahl der Fälle sind sie jedoch entgegengesetzt. Wenn Sie also in Python 3 keine __ne__
-Methode angeben, invertiert Python die __eq__
-Methode für Sie.
Wenn Sie Code schreiben, der sowohl auf Python 2 als auch auf Python 3 ausgeführt wird, sollten Sie beide definieren.
In der Dokumentation zum Datenmodell , die die "magischen Methoden abdeckt " können Sie auf Klassen implementieren (Hervorhebung meins):
Zwischen den Vergleichsoperatoren gibt es keine impliziten Beziehungen. Der Wahrheit von
x==y
impliziert nicht, dassx!=y
falsch ist. Dementsprechend, wann Definiere__eq__()
, man sollte auch__ne__()
definieren, damit der Operatoren verhalten sich wie erwartet.
Tags und Links python python-3.x operator-overloading