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 基礎之繼承、重寫、多繼承Python繼承
- 二、Java初級--8、繼承和重寫方法Java繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- java -繼承 -重寫Java繼承
- JAVA物件導向高階:繼承:許可權修飾符(繼承注意事項) 單繼承 Object類 方法重寫Java物件繼承Object
- python3 筆記19.類的繼承和重寫、新增新方法Python筆記繼承
- python 詳解類class的繼承、__init__初始化、super方法Python繼承
- python_類繼承例題Python繼承
- Python多重繼承注意事項!Python教程Python繼承
- Python 繼承 和 多型Python繼承多型
- Java-發紅包例項-繼承練習Java繼承
- python繼承Python繼承
- python 繼承Python繼承
- 繼承關係和魔術方法繼承
- Python中的繼承和多型Python繼承多型
- python3 筆記20.類的呼叫和多重繼承(多重繼承MRO方法解析順序)Python筆記繼承
- 單重繼承缺陷的臨時解決方法繼承
- python之繼承Python繼承
- python 類和例項Python
- 【Python】python類的繼承Python繼承
- 或許你並不需要重寫 init(from:) 方法
- PostgreSQL分割槽表、繼承表記錄去重方法SQL繼承
- Python中類方法和例項方法有什麼區別?Python
- Python類的繼承Python繼承
- 原型和繼承原型繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- 重學 JS 系列:聊聊繼承JS繼承
- 什麼是繼承?Python繼承的特徵有哪些?繼承Python特徵
- Python中有重寫和過載的方法嗎?Python
- es5繼承和es6類和繼承繼承
- Django筆記十八之save函式的繼承操作和指定欄位更新等例項方法Django筆記函式繼承
- [Python 基礎] Python 例項方法、靜態方法和類方法詳解 (包含區別和用法)Python
- Python學習手冊之類和繼承Python繼承
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- 18、繼承以及繼承中成員變數和成員方法的重名問題繼承變數
- 微課|中學生可以這樣學Python(例7.1):繼承Python繼承
- 多型和繼承多型繼承
- 封裝和繼承封裝繼承