Warum gibt es einen nicht gleichwertigen Operator in Python [Duplikat]

8

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.

    
magu_ 11.06.2015, 17:24
quelle

3 Antworten

7

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.

    
Ethan Furman 11.06.2015 17:44
quelle
1

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, dass x!=y falsch ist. Dementsprechend, wann   Definiere __eq__() , man sollte auch __ne__() definieren, damit der   Operatoren verhalten sich wie erwartet.

    
jonrsharpe 11.06.2015 17:49
quelle
-1

Scheint, dass Sie True zurückgeben, anstatt den Vergleich durchzuführen.

    
J_B 11.06.2015 17:28
quelle