Python在继承时,如果子类重写了init()函数,则父类的init()不会被调用,这时如果子类只是想要对父类的init()函数进行简单的扩展的话,是很不方便的。那么有没有比较方便的方法来从子类调用父类呢?
第一种是直接使用父类的类名来直接调用。(Python3.3)
class Parent: def __init__(self): print('This is parent init.') def sleep(self): print("Parent sleeps.") class Child(Parent): def __init__(self): Parent.__init__(self) print('This is child init.') def sleep(self): print("Child sleeps.") c=Child()
class Parent: def __init__(self): print('This is parent init.') def sleep(self): print("Parent sleeps.") class Child(Parent): def __init__(self): #Parent.__init__(self) super(Child,self).__init__() print('This is child init.') def sleep(self): print("Child sleeps.") c=Child()
另外,在类外面也可以使用这一函数,比如当子类覆盖了父类的某一方法后,想要通过子类的对象调用父类的这一方法:
class Parent: def __init__(self): print('This is parent init.') def sleep(self): print("Parent sleeps.") class Child(Parent): def __init__(self): #Parent.__init__(self) super().__init__() print('This is child init.') def sleep(self): print("Child sleeps.") c=Child() c.sleep() super(Child,c).sleep()