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

Python二级继承

Python二级继承

慕工程0101907 2021-03-29 17:40:07
我是python的新手,但是我对二级继承有疑问。我有这种情况:class A:  def Something(self):     #Do Stuffclass B(A):  def SomethingElse(self):     #Do other stuffclass C(B):  def Something(self):     #Do additional stuff请注意,类C继承自B,而类B继承自A,但类B不实现Something()方法。如果我为类C的实例调用super(C,self).Something(),会发生什么?它会调用类A中的方法吗?另外,如果类B确实实现Something(),但我想直接从类C调用类A的Something()(即绕过类B的实现),该怎么办?最后,有人可以向我解释为什么人们使用super()而不是直接调用父类的方法吗?谢谢。
查看完整描述

2 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

在第一种情况下,如果B没有实现Something,则调用super将落到定义它的地方,即A

在第二种情况下,可以通过调用可以绕过乙A.Something(self)

使用super它的主要原因是在您具有多重继承的情况下:Python将始终在MRO(方法解析顺序)中调用下一个定义。


查看完整回答
反对 回复 2021-04-05
?
MMTTMM

TA贡献1869条经验 获得超4个赞

  1. 是的,它将Something()A全班同学打电话。

  2. 您随时可以A.Something(self)从打来电话C

super()和其他调用约定的解释将花费一些时间。看看有关MRO和Python的Super的原始文章很漂亮,但是您不能使用它。


查看完整回答
反对 回复 2021-04-05
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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