如果在子類中需要父類的構(gòu)造方法就需要顯式地調(diào)用父類的構(gòu)造方法,或者不重寫父類的構(gòu)造方法。
子類不重寫 __init__,實例化子類時,會自動調(diào)用父類定義的 __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() )輸出結(jié)果為:
name: runoob
Son runoob
如果重寫了__init__ 時,實例化子類,就不會調(diào)用父類已經(jīng)定義的 __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() )輸出結(jié)果為:
hi
Son runoob
如果重寫了__init__ 時,要繼承父類的構(gòu)造方法,可以使用 super 關(guān)鍵字:
super(子類,self).__init__(參數(shù)1,參數(shù)2,....)
還有一種經(jīng)典寫法:
父類名稱.__init__(self,參數(shù)1,參數(shù)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() )輸出結(jié)果為:
name: runoob
hi
Son runoob
新聞熱點
疑難解答