我之前问过为什么并返回 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__
不成功时会发生什么?