在浮点值中添加整数值时,我意识到如果在float上调用__add__
方法正常工作,例如:
>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
但不是在整数上调用:
>>> m.__add__(n)
NotImplemented
起初我认为__add__
只是针对int
和float
类型实现了不同的方式(比如接受要添加到int类型的float类型,但不是相反)。然后我注意到如果我使用+运算符,一切正常:
>>> n + m
3.0
>>> m + n
3.0
有人知道为什么会这样吗? __add__
和+
彼此之间没有密切关系吗?
答案 0 :(得分:6)
a + b
未直接翻译为a.__add__(b)
。如果b.__radd__(a)
不存在或返回a.__add__
,或者NotImplemented
是b
&#39子类型的实例,它也会尝试a
; s型。