我之前问过为什么并返回 NotImplemented 的相同问题,但由于可能重复,该问题已关闭。10 .__add__(5.5)10. __radd__ (5.5)
“重复”之一的答案表明:
a + b不直接翻译成a.__add__(b).b.__radd__(a)如果a.__add__不存在或返回,它也会尝试NotImplemented。
该答案表明要么__add__或__radd__应该工作,但既不工作__add__也不__radd__真正工作,如我上面的代码所示。
另一个“重复”的答案是:
a+b 等价于导入操作符;运算符.add(a,b)。它首先调用
a.__add__(b),然后,如有必要,b.__radd__(a)
同样,既不__add__也不__radd__做这项工作。因此,这些答案基本上是在解释Python 文档关于特殊方法的内容,这些方法指出,当首先调用+运算符时__add__,然后__radd__if__add__不成功。__radd__不成功时会发生什么?