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

问题描述 投票:0回答:2

将整数值添加到浮点值时,我意识到如果在浮点上调用,

__add__
方法可以正常工作,如下所示:

>>> 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__
+
彼此关系不是很深吗?

python floating-point integer addition
2个回答
6
投票

a + b
并不直接翻译为
a.__add__(b)
。如果
b.__radd__(a)
不存在或返回
a.__add__
,或者
NotImplemented
b
类型的子类型的实例,它还会尝试
a


0
投票

定义一个MathOperation类,其方法add()可以处理整数和浮点类型。使用 python 编码实现方法重载以支持整数和浮点数的加法

© www.soinside.com 2019 - 2024. All rights reserved.