将整数值添加到浮点值时,我发现如果在浮点数上调用__add__
方法,它可以正常工作,例如:
>>> n = 2.0
>>> m = 1
>>> n.__add__(m)
3.0
但如果传入整数则不行:
>>> m.__add__(n)
NotImplemented
一开始,我认为在 int
和 float
类型中,只是实现了不同的 __add__
方法(比如说,float 类型接受加操作符和 int 类型相加,但是 int 类型却不能接受 float 类型相加)。但后来我发现,如果用 + 操作符代替 __add__
方法,一切都能正常工作:
>>> n + m
3.0
>>> m + n
3.0
有没有人知道为什么会出现这种情况?__add__
和+
是否不是密切相关的?
NotImplemented
也会在m.__radd__(n)
中返回。 - A. Vidor__radd__
方法写错了。 - user2357112