为了账号安全,请及时绑定邮箱和手机立即绑定

Python super() 调用父类方法, 但是父类中 self 并不是父类的实例而是子类的实例?

Python super() 调用父类方法, 但是父类中 self 并不是父类的实例而是子类的实例?

德玛西亚99 2019-05-11 15:55:28
本人在学习Python的过程中发现了这么一个问题,自己查阅了一点资料但是还是没有理解,如下:版本为python3.6代码如下:classX:def__init__(self):self.x=10deff(self):returnself.xclassY(X):def__init__(self):self.x=100defb(self):returnsuper().f()x=X()y=Y()print(y.b())#->100,为什么不是10?问题描述:本人对于super()其实一直不是特别理解,网上查了一下资料以后理解为super()会返回MRO列表里面的下一个类,那么我把Y的MRO打印出来:print('mro',Y.mro())#mro[,,]那么根据MRO列表,下面的类就是X了,那么super().f()实际就为X.f(),那么里面的returnself.x应该就是X实例,可是实际运行结果显示self是子类Y的实例.既然这里的super().f()调用了父类的方法,里面的self不应该是指代父类实例么?这是我难以理解的地方.表述有点乱,望有前辈能给予解答,不胜感激!问题补充:写这个问题的时候又想到了一点:继承的时候常常会有super().__init__()来调用父类的__init__()函数,调用这个函数的时候里面的self其实也就指代了子类实例?好像与之前的问题一个意思,但是不知道怎么理解,望能有前辈指点一下.
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 1233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号