|
|
10鱼币
小甲鱼老师在42讲的视频里面定义了一个类,里面尝试自己来定义int的__add__和__sub__方法:
- >>> class Try_int(int):
- def __add__(self,other):
- return self + other
- def __sub__(self,other):
- return self - other
-
- >>> a = Try_int(3)
- >>> b = Try_int(5)
- >>> a + b #会进入无限递归
复制代码
但是这样会无限递归 运行出来并不是想要的结果
然后小甲鱼说要这样修改就能解决无限递归这个问题:
- >>> class Try_int(int):
- def __add__(self,other):
- return int(self) + int(other)
- def __sub__(self,other):
- return int(self) - int(other)
-
- >>> a = Try_int(3)
- >>> b = Try_int(5)
- >>> a + b
- 8
复制代码
小甲鱼老师上课也说了为什么会这样。。
可是我仍然不是很理解。。。
求指点。。
|
最佳答案
查看完整内容
的确, 在实例化Try_int类的时候会调用父类int的构造函数
但是, 这并不能理解为这个实例是int类呀
举个例子:
子女继承于父母, 但是却有别与其父母;
Try_int继承于int, 但是却有别于int.
Try_int类改写了两个方法, 在执行这两个方法的时候就是改写过的代码了.
至于后面的str类的那个问题, 我推荐你先看一遍Python的str类有哪些方法, 看完你就明白为什么这里不会出现问题.
|