Wenn Sie einen ganzzahligen Wert auf einen Float-Wert hinzufügen, erkannte ich, dass __add__
Methode funktioniert prima, wenn auf Schwimmer genannt, wie folgt aus:Python: __add__ und +, unterschiedliches Verhalten mit Schwimmer und integer
>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
aber wenn nicht auf eine ganze Zahl genannt:
>>> m.__add__(n)
NotImplemented
zuerst dachte ich, dass __add__
wurde nur anders umgesetzt für int
und float
Typen (wie float-Typen zu akzeptieren hinzugefügt werden Typen int, aber nicht das Gegenteil). Dann habe ich gemerkt, dass alles gut funktioniert, wenn ich den + Operator benutze:
>>> n + m
3.0
>>> m + n
3.0
Weiß jemand, warum das passiert? Sind __add__
und +
nicht tief miteinander verwandt?
'NotImplemented' auch für' m .__ zurück radd __ (n) ' –
@ this-vidor: Falsche' __radd__' dort Methode. – user2357112
@ user2357112 Wahr! Dann ist das die Lösung. –