为什么__add__魔术方法不起作用?

时间:2017-11-05 03:26:39

标签: python

我想更改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)

1 个答案:

答案 0 :(得分:4)

它不起作用,因为selfNumber,因此self + other调用self.__add__(other)self + other调用... {/} p>

修复方法是在添加之前将self变为非Number的内容。

return int(self) + other