如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法 或者不重写父类的构造方法。
子类不重写 __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('facesoho')print ( son.getName() )
输出结果为:
name: facesohoSon facesoho
如果重写了__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('facesoho')print ( son.getName() )
输出结果为:
hiSon facesoho
如果重写了__init__ 时 要继承父类的构造方法 可以使用 super 关键字:
super(子类 self).__init__(参数1 参数2 ....)
还有一种经典写法:
父类名称.__init__(self,参数1 参数2 ...)
实例
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('facesoho')print ( son.getName() )
输出结果为:
name: facesohohiSon facesoho
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题