Python 我必须重写integer\uuuu add\uuuuu方法以支持整数和对象的加法吗?

Python 我必须重写integer\uuuu add\uuuuu方法以支持整数和对象的加法吗?,python,add,magic-methods,Python,Add,Magic Methods,所以我创建了一个名为Complex的类,它是虚数的表示(我知道python有自己的,但我想自己创建一个)。问题是我想构造一个add方法,它支持复数和整数的加法。因此: a=复合体(2,4)+复合体(1,1) b=复数(0,3)+3 c=2+复合物(4,5) 所有这些都应该得到支持。据我所知 object1+object2 语法上的sugar等同于 object1.\uuuu添加\uuuu(object2) 第一个和第二个示例很好,但是如何让我的类支持INTEGER+COMPLEX形式的加法

所以我创建了一个名为Complex的类,它是虚数的表示(我知道python有自己的,但我想自己创建一个)。问题是我想构造一个add方法,它支持复数和整数的加法。因此:

a=复合体(2,4)+复合体(1,1)
b=复数(0,3)+3
c=2+复合物(4,5)
所有这些都应该得到支持。据我所知

object1+object2
语法上的sugar等同于

object1.\uuuu添加\uuuu(object2)

第一个和第二个示例很好,但是如何让我的类支持INTEGER+COMPLEX形式的加法呢?我是否必须重写integer\uuuu add\uuuu方法,如果是的话;我如何做到这一点,还有其他方法吗?

您必须在
Complex
上实现
\uuuud\uuuu

这种工作方式非常酷,如果在
\uuuu add\uuu
的对象上没有现有的实现,在您的例子中,
int
+
Complex
,python将自动检查
\uu radd\uu
是否在右侧对象上实现

因此,这就像:

- 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)

您必须在
Complex
上实现
\uuuu radd\uuuu

这种工作方式非常酷,如果在
\uuuu add\uuu
的对象上没有现有的实现,在您的例子中,
int
+
Complex
,python将自动检查
\uu radd\uu
是否在右侧对象上实现

因此,这就像:

- 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)