开个丸笑 发表于 2018-2-4 20:56:07

零基础入门python43讲

class int(int):
        def __add__(self,other):
                return int.__add__(self,other)
a=int(5)
b=int(3)
a+b为什么会造成无限递归
但是
class int(int):
        def __add__(self,other):
                return int.__sub__(self,other)
可以得出结果啊!!

°蓝鲤歌蓝 发表于 2018-2-4 20:56:08

因为你第一个类定义的__add__()方法是返回自身的__add__()方法,然后就是对自身的无限调用所以会一直循环下去。
而第二类定义的__add__()方法是返回自身的__sub__()方法,而__sub__()方法是继承程序本身的int里的,返回的是 a - b,所以会得出结果。

开个丸笑 发表于 2018-2-4 21:41:05

°蓝鲤歌蓝 发表于 2018-2-4 21:23
因为你第一个类定义的__add__()方法是返回自身的__add__()方法,然后就是对自身的无限调用所以会一直循环下 ...

我去我竟然懂了{:5_91:}谢谢
页: [1]
查看完整版本: 零基础入门python43讲