Python子类继承父类构造函数的相关知识
如果子类需要父类的构造函数,则必须显式调用父类的构造函数,或者不重写父类的构造函数。
子类不会覆盖 __init__。当子类实例化时,会自动调用父类定义的__init__。
class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name) ) def getName(self): return 'Father ' + self.name class Son(Father): def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() )
输出结果为:
name: runoob
子runoob
如果重写__init__且子类是实例,则不会调用父类定义的__init__。语法格式如下:
class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name) ) def getName(self): return 'Father ' + self.name class Son(Father): def __init__(self, name): print ( "hi" ) self.name = name def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() )
输出结果为:
hi
Son runoob
如果重写__init__,想要继承父类的构造方法,可以使用super关键字:
super(子类,self).__init__(参数1,参数2,....)
还有一种经典的写法:
父类名称.__init__(self,参数1,参数2,...)
class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name)) def getName(self): return 'Father ' + self.name class Son(Father): def __init__(self, name): super(Son, self).__init__(name) print ("hi") self.name = name def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() )
输出结果为:
name: runoob
hello
儿子runoob
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。