我想更改ADD python Magic Method(我的意思是, __ add __ )来添加两个数字(代码1)。当我运行代码时,输出等于 RecursionError:在Pycharm IDE中调用Python对象时超出了最大递归深度。但是在更改代码(代码2)之后,新代码才能正常工作。为什么Code 1不起作用?
代码1(错误):
class Number(int):
def __add__(self, other):
return self + other
print(Number(5) + 3)
代码2(正确):
class Number(int):
def __add__(self, other):
return self - (-other)
print(Number(5) + 3)
答案 0 :(得分:4)
它不起作用,因为self
是Number
,因此self + other
调用self.__add__(other)
,self + other
调用... {/} p>
修复方法是在添加之前将self
变为非Number
的内容。
return int(self) + other