浮動小数点値の整数値を追加する場合、私はフロートで呼び出された場合__add__
方法は、このように、正常に動作していることに気づいた:パイソン:__add__と+、フロートと異なる挙動と整数
>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
しかし整数に呼び出されていない場合:まず
>>> m.__add__(n)
NotImplemented
私は__add__
がちょうどint
とfloat
(型をintに追加する受諾フロートタイプのようではなく、反対側)のタイプの異なる方法で実装されていたと思いました。次に、+演算子を代わりに使用すると、すべて正常に動作することに気づきました。
>>> n + m
3.0
>>> m + n
3.0
これはなぜ起こっているのですか? __add__
と+
はお互いに深く関係していませんか?
'm .__ radd __(n)'のために 'NotImplemented'も返されました。 –
@ this-vidor:そこに間違った' __radd__'メソッドがあります。 – user2357112
@ user2357112 True!それが解決策です。 –