Python 我必须重写integer\uuuu add\uuuuu方法以支持整数和对象的加法吗?
所以我创建了一个名为Complex的类,它是虚数的表示(我知道python有自己的,但我想自己创建一个)。问题是我想构造一个add方法,它支持复数和整数的加法。因此: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形式的加法
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)