我是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(方法解析顺序)中调用下一个定义。

MMTTMM
TA贡献1869条经验 获得超4个赞
是的,它将
Something()
由A
全班同学打电话。您随时可以
A.Something(self)
从打来电话C
。
super()
和其他调用约定的解释将花费一些时间。看看有关MRO和Python的Super的原始文章很漂亮,但是您不能使用它。
添加回答
举报
0/150
提交
取消