如果在子類中需要父類的構(gòu)造方法就需要顯式地調(diào)用父類的構(gòu)造方法,或者不重寫父類的構(gòu)造方法。
子類不重寫 __init__,實(shí)例化子類時(shí),會(huì)自動(dòng)調(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__ 時(shí),實(shí)例化子類,就不會(huì)調(diào)用父類已經(jīng)定義的 __init__,語(yǔ)法格式如下:
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__ 時(shí),要繼承父類的構(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
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

