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前端网发表,如需转载,请注明页面地址。
code前端网
