python類繼承與子類實例初始化用法分析
本文實例講述了python類繼承與子類實例初始化用法。分享給大家供大家參考。具體分析如下:
[ 先貼參考書籍原文(中文英文對照)]
__init__方法介紹:
If a base class has an __init__() method the derived class's __init__() method must explicitly call it to ensure proper initialization of the base class part of the instance; for example: "BaseClass.__init__(self, [args...])"
As a special contraint on constructors, no value may be returned; doing so will cause a TypeError to be raised at runtime.
如果其基類也具有__init__(), 必須顯式地在__init__()調(diào)用它, 以保證能夠適當(dāng)?shù)爻跏蓟幕惒糠?例如: "BaseClass.__init__(self, [args...])"作為構(gòu)造器的特殊情況, 它沒有值被返回, 如果返回某個值, 會在運行時拋出異常TypeError.
1.子類定義了__init__方法時若未顯示調(diào)用基類__init__方法,python不會幫你調(diào)用,解釋運行都Ok
class A(): def __init__(self): print 'a' class B(A): def __init__(self): print 'b' if __name__=='__main__': b=B() >>> b
2.子類未定義__init__方法時,python會自動幫你調(diào)用首個基類的__init__方法,注意是首個。即:子類繼承自多個基類時,只有第一個基類的__init__方法會被調(diào)用到:
class A: def __init__(self): print 'a' class B: def __init__(self): print 'b' class C(B): def __init__(self): print 'c' pass class D1(A,B,C): pass class D2(B,A,C): pass class D3(C,B,A): pass if(__name__=='__main__'): print 'd1------->:' d1=D1() print 'd2------->:' d2=D2() print 'd3------->:' d3=D3() >>> d1------->: a d2------->: b d3------->: c
3)基類未定義__init__方法時,若此時子類顯示調(diào)用基類__init__方法時,python向上超找基類的基類的__init__方法并調(diào)用,實質(zhì)同2
class A: def __init__(self): print 'a' class B: def __init__(self): print 'b' class C1(B,A): pass class C2(A,B): pass class D1(C1): def __init__(self): C1.__init__(self) class D2(C2): def __init__(self): C2.__init__(self) if(__name__=='__main__'): print 'd1------->:' d1=D1() print 'd2------->:' d2=D2() >>> d1------->: b d2------->: a
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解
在復(fù)雜的Excel業(yè)務(wù)數(shù)據(jù)處理中,三兄弟扮演的角色缺一不可。如何能夠使用xlrd/xlwt/xlutils三個模塊來實現(xiàn)數(shù)據(jù)處理就是今天的內(nèi)容,希望對大家有所幫助2023-03-03使用Python的Bottle框架寫一個簡單的服務(wù)接口的示例
這篇文章主要介紹了使用Python的Bottle框架寫一個簡單的服務(wù)接口的示例,基于Linux系統(tǒng)環(huán)境,需要的朋友可以參考下2015-08-08Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié)
這篇文章主要介紹了Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié),本文講解了格式化類方法、查找 & 替換類方法、拆分 & 組合類方法等內(nèi)容,需要的朋友可以參考下2015-04-04python使用dabl幾行代碼實現(xiàn)數(shù)據(jù)處理分析及ML自動化
這篇文章主要為大家分享一個名為?dabl?的開源?Python?工具包,它可以自動化機器學(xué)習(xí)模型開發(fā),包括數(shù)據(jù)預(yù)處理、特征可視化和分析、建模2021-11-11Java中MultipartFile與File互轉(zhuǎn)的實現(xiàn)
本文主要介紹了Java中MultipartFile與File互轉(zhuǎn)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03