关于算术方法 求看看
小甲鱼的视频里提到了一下class Newint(int):
def __add__(self,other):
return int(self)+int(other)
def __sub__(self,other):
return int(self)-int(other)
class Newint(int):
def __add__(self,other):
return self+other
def __sub__(self,other):
return self+other
上面这段代码能正常运行 但下面这段却因为无限递归报错了前面那段每次都调出了+号不也是递归吗为什么前面这个就没有报错?? 因为前面调用的是 int 的 __add__ 方法,让 int 类处理呀 第一个是int(self) + int(other),调用的就是int类的__add__方法了。
__sub__同理。
第一个调用的是 int 类的方法,正常执行
而第二个代码,因为你方法内还有self+other ,和 self+other ,你调用其中一个就会因为方法中还是有 + 法 和 - 法而重新调用自身,导致再次调用,陷入无限递归中去
Twilight6 发表于 2020-8-19 10:05
第一个调用的是 int 类的方法,正常执行
而第二个代码,因为你方法内还有self+other ,和 self+othe ...
也就是说 self+other 和int(self)+int(other)中的两个+号是不同含义是吧int那个加号是属于int的add方法而前面那个+号是属于我定义的add方法 是这个意思吗 只爱整活周淑怡 发表于 2020-8-19 12:58
也就是说 self+other 和int(self)+int(other)中的两个+号是不同含义是吧int那个加号是属于int的add方法 ...
对,这个时候你的直接 + 是调用你自己定义的
页:
[1]