繁体   English   中英

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

[英]Python: __add__ and +, different behavior with float and integer

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

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

但如果调用整数则不会:

>>> m.__add__(n)
NotImplemented

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

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

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

a + b不会直接转换为a.__add__(b) 它也试图b.__radd__(a)如果a.__add__不存在或返回NotImplemented ,或者如果b是的子类型的实例a的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM