python類繼承與子類實(shí)例初始化用法分析
本文實(shí)例講述了python類繼承與子類實(shí)例初始化用法。分享給大家供大家參考。具體分析如下:
[ 先貼參考書籍原文(中文英文對(duì)照)]
__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)造器的特殊情況, 它沒有值被返回, 如果返回某個(gè)值, 會(huì)在運(yùn)行時(shí)拋出異常TypeError.
1.子類定義了__init__方法時(shí)若未顯示調(diào)用基類__init__方法,python不會(huì)幫你調(diào)用,解釋運(yùn)行都Ok
class A(): def __init__(self): print 'a' class B(A): def __init__(self): print 'b' if __name__=='__main__': b=B() >>> b
2.子類未定義__init__方法時(shí),python會(huì)自動(dòng)幫你調(diào)用首個(gè)基類的__init__方法,注意是首個(gè)。即:子類繼承自多個(gè)基類時(shí),只有第一個(gè)基類的__init__方法會(huì)被調(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__方法時(shí),若此時(shí)子類顯示調(diào)用基類__init__方法時(shí),python向上超找基類的基類的__init__方法并調(diào)用,實(shí)質(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
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- 關(guān)于Java繼承中父類和子類構(gòu)造函數(shù)的問題
- C#子類對(duì)基類方法的繼承、重寫與隱藏詳解
- python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例
- Python子類繼承父類構(gòu)造函數(shù)詳解
- C++類繼承之子類調(diào)用父類的構(gòu)造函數(shù)的實(shí)例詳解
- python中子類繼承父類的__init__方法實(shí)例
- 解析:繼承ViewGroup后的子類如何重寫onMeasure方法
- java中子類繼承父類,程序運(yùn)行順序的深入分析
- 子類繼承父類時(shí)構(gòu)造函數(shù)相關(guān)問題解析
相關(guān)文章
詳解python并發(fā)獲取snmp信息及性能測(cè)試
本篇文章主要介紹了詳解python并發(fā)獲取snmp信息及性能測(cè)試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解
在復(fù)雜的Excel業(yè)務(wù)數(shù)據(jù)處理中,三兄弟扮演的角色缺一不可。如何能夠使用xlrd/xlwt/xlutils三個(gè)模塊來實(shí)現(xiàn)數(shù)據(jù)處理就是今天的內(nèi)容,希望對(duì)大家有所幫助2023-03-03使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(wù)接口的示例
這篇文章主要介紹了使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(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幾行代碼實(shí)現(xiàn)數(shù)據(jù)處理分析及ML自動(dòng)化
這篇文章主要為大家分享一個(gè)名為?dabl?的開源?Python?工具包,它可以自動(dòng)化機(jī)器學(xué)習(xí)模型開發(fā),包括數(shù)據(jù)預(yù)處理、特征可視化和分析、建模2021-11-11Python對(duì)圖像進(jìn)行灰度處理的代碼介紹
這篇文章主要給大家介紹了關(guān)于Python對(duì)圖像進(jìn)行灰度處理的相關(guān)資料,圖像灰度化是將一幅彩色圖像轉(zhuǎn)換為灰度化圖像的過程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11python scipy卷積運(yùn)算的實(shí)現(xiàn)方法
這篇文章主要介紹了python scipy卷積運(yùn)算的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)名片管理系統(tǒng)項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn)
本文主要介紹了Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03