Python:__ add__和+,浮点数和整数的不同行为

时间:2016-07-27 22:49:44

标签: python floating-point integer add

在浮点值中添加整数值时,我意识到如果在float上调用__add__方法正常工作,例如:

>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0

但不是在整数上调用:

>>> m.__add__(n)
NotImplemented

起初我认为__add__只是针对intfloat类型实现了不同的方式(比如接受要添加到int类型的float类型,但不是相反)。然后我注意到如果我使用+运算符,一切正常:

>>> n + m
3.0
>>> m + n
3.0

有人知道为什么会这样吗? __add__+彼此之间没有密切关系吗?

1 个答案:

答案 0 :(得分:6)

a + b未直接翻译为a.__add__(b)。如果b.__radd__(a)不存在或返回a.__add__,或者NotImplementedb&#39子类型的实例,它也会尝试a ; s型。