我正在读这本书 - "Core Python Programming"
,我真的觉得它非常好,我想说。但是在研究继承主题时,我有一段时间感到困惑。
某处的书说-我们可以使用super()
调用super class method
它将为我们找到基类方法,而且我们不需要self
显式传递,就像我们没有 super..
这是示例代码: -
# Invoking super class method without super() .. Need to pass `self` as argument
class Child(Parent):
def foo(self):
Parent.foo(self)
# Invoking with super().
# No need to pass `self` as argument to foo()
class Child(Parent1, Parent2):
def foo(self):
super(Child, self).foo()
print 'Hi, I am Child-foo()'
我的问题是 - 为什么我们必须传递classname
tosuper()
调用.. 因为类名可以从调用 super 的类中推断出来..
所以,由于 super() 是从 调用的
class Child
,类名应该是隐式的。那么为什么我们需要它呢?
*编辑:-Child
作为参数提供给 super() 没有意义,因为它没有提供任何信息..我们可以使用super(self)
..并且该方法将按照它们的顺序在超类中搜索括号内给出..