Python中子类继承父类的构造方法,有以下三种情况
子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。
class Father(object):def __init__(self, name):self.name=nameprint ( "name: %s" %( self.name) )def getName(self):return 'Father ' + self.nameclass Son(Father):def getName(self):return 'Son '+self.nameif __name__=='__main__':son=Son('runoob')print ( son.getName() )
输出结果
name: runoob
Son runoob
子类重写__init__()方法,实例化子类后,将不会自动调用父类的__init__()的方法。
class Father(object):def __init__(self, name):self.name=nameprint ( "name: %s" %( self.name) )def getName(self):return 'Father ' + self.nameclass Son(Father):def __init__(self, name):print ( "hi" )self.name = namedef getName(self):return 'Son '+self.nameif __name__=='__main__':son=Son('runoob')print ( son.getName() )
输出结果hi
Son runoob
使用super关键词
。super(子类,self).__init__(参数1,参数2,....)
super().__init__(参数1, 参数2, ...) # python3新版本写法
class Father(object):def __init__(self, name):self.name=nameprint ( "name: %s" %( self.name))def getName(self):return 'Father ' + self.nameclass Son(Father):def __init__(self, name):super(Son, self).__init__(name)print ("hi")self.name = namedef getName(self):return 'Son '+self.nameif __name__=='__main__':son=Son('runoob')print ( son.getName() )
输出结果name: runoob
hi
Son runoob
上一篇:什么痛苦,什么疾病,什么成语
下一篇:一个不可替代的非常重要的成语