我是否必须重写整数__add__方法以支持添加整数和对象?



所以我正在制作一个名为Complex的类,它是虚数的表示(我知道python有自己的,但我想自己做一个(。问题是我想构造一个支持复数和整数相加的add方法。所以:

a = Complex(2, 4) + Complex(1, 1)
b = Complex(0, 3) + 3
c = 2 + Complex(4, 5)

应该都支持。据我了解,

object1 + object2

是句法糖等价物

object1.__add__(object2)

第一个和第二个示例很好,但是如何让我的类支持整数 + 复杂形式的加法?如果是这样,我是否必须覆盖整数__add__method;我该怎么做,还有别的办法吗?

你必须在Complex上实现__radd__

这种工作方式非常酷,如果在对象上没有现有的实现__add__,在您的情况下,int+Complex,Python 将自动检查__radd__是否在右侧对象上实现。

所以它会像:

- does `int` have `__add__` for `Complex`? no
- does `Complex` have `__radd__` for `int`? yes. cool, we've solved it

实现可能如下所示:

class Complex:
def __radd__(self, other):
return self + Complex(other)

相关内容

最新更新