|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Try_int(int):
def __add_(self,other):
return self+other
a = Try_int(3)
b = Try_int(3)
a+b 就会出现无限递归,但是将return的值改为int(self)+int(other)就正常了,为什么?没看懂
原本的a 和 b 不是int吗?
会无限递归的原因是因为:
class E(int):
def __add__(self,other):
return self+other
a = E(3)
b = E(3)
print(a+b)
最先开始 你 print 那+号会使得你自动调用 E类的 __add__ 方法,然后执行返回 self+other,而 这里的加法又一次调用了 E 类的 __add__ 方法,导致无限递归
而你加上 int 后的值 就不属于 int 方法,也就是加上 int 后你调用的是父类 int 的 __add__ 方法,而不是自己的 __add__ 方法 所以不会产生无限递归
|
|