python繼承和重寫init方法--例項
一、 子類不重寫__init__
, 例項化子類時,會自動呼叫父類定義的__init__
二、 子類
重寫了__init__
時,例項化子類,就不會呼叫父類已經定義的__init__
三、
為了能使用或擴充套件父類的行為,要顯示呼叫父類的__init__
方法,有以下兩種呼叫方式。
1. 呼叫未繫結的父類構造方法
class FooParent(object): #父類
def __init__(self):
self.parent = 'I\'m the parent.'
print 'Parent'
def bar(self,message):
print message, 'from Parent'
class FooChild(FooParent): #子類
def __init__(self):
FooParent.__init__(self) #呼叫未繫結的超類構造方法【必須顯式呼叫父類的構造方法,否則不會執行父類構造方法,這個跟Java不一樣】
print 'Child'
def bar(self,message):
FooParent.bar(self,message)
print 'Child bar function.'
print self.parent
if __name__=='__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
2. super繼承:使用super需要繼承object物件,屬於新式類。super函式會返回一個super物件 ,這個物件負責進行方法解析,解析過程中會自動查詢所有父類以及父類的父類。super函式比在超類中直接呼叫未繫結方法更加直觀,但是最大的優點是如果子類繼承了多個父類,它只需要使用一次super函式就可以。而如果沒有這個需求,直接使用FooParent.__init__(self)更加直觀.
class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print 'Parent'
def bar(self,message):
print message,'from Parent'
class FooChild(FooParent):
def __init__(self):
super(FooChild,self).__init__() #使用super函式
print 'Child'
def bar(self,message):
super(FooChild, self).bar(message) #super 呼叫例項方法
print 'Child bar fuction'
print self.parent
if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
相關文章
- python繼承和重寫init方法Python繼承
- java繼承-重寫-super例項補充Java繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- Python繼承過程的__init__方法Python繼承
- 繼承 重寫和抽象類繼承抽象
- 二、Java初級--8、繼承和重寫方法Java繼承
- java -繼承 -重寫Java繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- JAVA物件導向高階:繼承:許可權修飾符(繼承注意事項) 單繼承 Object類 方法重寫Java物件繼承Object
- python3 筆記19.類的繼承和重寫、新增新方法Python筆記繼承
- python 詳解類class的繼承、__init__初始化、super方法Python繼承
- oop繼承與重寫筆記一OOP繼承筆記
- python_類繼承例題Python繼承
- Java-發紅包例項-繼承練習Java繼承
- prototype原型繼承簡單程式碼例項原型繼承
- C++繼承性應用例項 日期和時間(轉)C++繼承
- Python(3) python __init__()初始化及繼承的實現Python繼承
- Python 繼承 和 多型Python繼承多型
- Python多重繼承注意事項!Python教程Python繼承
- javascript物件導向繼承的簡單例項JavaScript物件繼承單例
- python繼承Python繼承
- python 繼承Python繼承
- 繼承關係和魔術方法繼承
- 單重繼承缺陷的臨時解決方法繼承
- 重繼承、介面和異常處理 (轉)繼承
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- JS原型繼承和類式繼承JS原型繼承
- 07-08、構造方法基本概念:重寫init方法構造方法
- java靜態變數和靜態函式是否可以被繼承,重寫!Java變數函式繼承
- python3 筆記20.類的呼叫和多重繼承(多重繼承MRO方法解析順序)Python筆記繼承
- 關於繼承與重寫的面試程式設計題繼承面試程式設計
- Python中的繼承和多型Python繼承多型
- javascript使用call()函式實現繼承程式碼例項JavaScript函式繼承
- PostgreSQL分割槽表、繼承表記錄去重方法SQL繼承
- python之繼承Python繼承
- 重學 JS 系列:聊聊繼承JS繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- iOS 繼承&類方法iOS繼承