[英]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__
只是对int
和float
类型实现不同(例如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.