Python二级继承

我是python的新手,但是我对二级继承有疑问。


我有这种情况:


class A:

  def Something(self):

     #Do Stuff


class B(A):

  def SomethingElse(self):

     #Do other stuff


class 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()而不是直接调用父类的方法吗?谢谢。


慕工程0101907
浏览 198回答 2
2回答

慕森卡

在第一种情况下,如果B没有实现Something,则调用super将落到定义它的地方,即A。在第二种情况下,可以通过调用可以绕过乙A.Something(self)。使用super它的主要原因是在您具有多重继承的情况下:Python将始终在MRO(方法解析顺序)中调用下一个定义。

MMTTMM

是的,它将Something()由A全班同学打电话。您随时可以A.Something(self)从打来电话C。super()和其他调用约定的解释将花费一些时间。看看有关MRO和Python的Super的原始文章很漂亮,但是您不能使用它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python