Python super(Class, self).method vs super(Parent, self).method

Posted

技术标签:

【中文标题】Python super(Class, self).method vs super(Parent, self).method【英文标题】: 【发布时间】:2013-02-07 04:51:18 【问题描述】:

这个问题源自以下question,假设class B 扩展class A

class A(object):
  def do_work(self):
    print 123

class B(A):
  def do_work(self):
    super(B,self).do_work() # versus the next statement
    super(A,self).do_work() # what's the difference?

【问题讨论】:

【参考方案1】:
super(B,self).do_work()

将调用do_work 的父类所看到的B 函数——即A.do_work


super(A,self).do_work()

将调用A 的父类所看到的do_work 函数,即object.do_work(它可能不存在,因此可能会引发异常)。

【讨论】:

如果做 super(A, self).do_work 不是要走的路,那我该如何解决这个问题? ***.com/questions/14739809/… 谢谢! @JamesLin 为该问题添加了答案。

以上是关于Python super(Class, self).method vs super(Parent, self).method的主要内容,如果未能解决你的问题,请参考以下文章

python Parent.__init()和super(Child, self)的区别

Python ---- super()使用

[super class]和[self class]

『Python』class的积累

python 面向对象MRO C3算法 super

Python_12 多继承与多态