在C++中类的继承,子类构造函数需要调用父类构造函数。同样的,python中也需要这样,super函数可以找到对应的父函数。比直接显式调用函数更清晰,同时也可以避免多继承等问题。
class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print ('Parent')
def bar(self,message):
print ("%s from Parent" % message)
class FooChild(FooParent):
def __init__(self):
# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类B的对象 FooChild 转换为类 FooParent 的对象
super(FooChild,self).__init__()
print ('Child')
def bar(self,message):
super(FooChild, self).bar(message)
print ('Child bar fuction')
print (self.parent)
if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
结果如下:
Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.