Python 3.1 快速導覽- 類別多重繼承
文章推薦指數: 80 %
多重繼承(mutliple inheritance) 的使用很簡單,寫父類別的小括弧中,利用逗點分開每個父類別即可。
以下示範繼承兩個父類別的寫法 class SubClass(SuperClass1 ...
網頁
導論
G+專頁
G+社群
FB粉絲團
FB社團
微博
YouTube
Twitter
GitHub
關於本站
意見提供或問題回報
新站
公告
《如何自學程式設計》入選GooglePlay台灣地區2016年度最佳書籍|本站於GooglePlay銷售電子書。
預計之後會調整本站內容,凡是有兩個版本的教材,舊版本將刪除。
------
Udemy|Python專案開發入門的二十一堂課|促銷優惠
Python3.1快速導覽-類別多重繼承
設計類別(class)時,父類別(superclass)可以有多個,這是說子類別(subclass)能夠繼承(inherit)多個父類別,使子類別可以有多種特性。
例如我們設計一個Animal類別,囊括所有我們想要有的動物特性,吃、喝、拉、撒、睡等等,我們另外設計一個Dog類別繼承Animal,可是「狗」還有些跟主人親密的寵物特性等等,這與一般動物的原始不太一樣。
當然,寵物特性可以全部規劃在Dog中,可是如果要另外設計Cat類別呢?因此,將所有寵物特性獨立成Pet類別,然後給Dog及Cat都繼承,使「狗」與「貓」都有動物特性,也都具有寵物特性。
多重繼承(mutlipleinheritance)的使用很簡單,寫父類別的小括弧中,利用逗點分開每個父類別即可。
以下示範繼承兩個父類別的寫法
classSubClass(SuperClass1,SuperClass2):
pass
這裡須注意一點,當子類別繼承(inheritance)超過一個來源的時候,會以寫在最左邊的父類別優先繼承,這是說,多個父類別如果有相同名稱的屬性(attribute)與方法(method),例如__init__()、__str__()等,就會以最左邊的父類別優先。
因此,如果SuperClass1有__init__()、__str__()等,SubClass就會繼承SuperClass1的__init__()及__str__(),而SuperClass2的__init__()、__str__()不會出現在SubClass之中。
以下程式示範多重繼承的這項規則
classDemo:
__x=0
def__init__(self,i):
self.__i=i
Demo.__x+=1
def__str__(self):
returnstr(self.__i)
defhello(self):
print("hello"+self.__str__())
@classmethod
defgetX(cls):
returncls.__x
classOther:
def__init__(self,k):
self.k=k
def__str__(self):
returnstr(self.k)
defhello(self):
print("hello,world")
defbye(self):
print("Good-bye!",self.__str__())
classSubDemo(Demo,Other):
def__init__(self,i,j):
super().__init__(i)
self.__j=j
def__str__(self):
returnsuper().__str__()+"+"+str(self.__j)
a=SubDemo(12,34)
a.hello()
a.bye()
b=SubDemo(56,78)
b.hello()
b.bye()
#《程式語言教學誌》的範例程式
#http://pydoing.blogspot.com/
#檔名:cla21.py
#功能:示範Python程式
#作者:張凱慶
#時間:西元2010年12月
執行結果如下
SubDemo繼承自Demo與Other
classSubDemo(Demo,Other):
def__init__(self,i,j):
super().__init__(i)
self.__j=j
def__str__(self):
returnsuper().__str__()+"+"+str(self.__j)
Demo與Other有三個相同名稱的方法,__init__()、__str__()與hello(),這裡SubDemo改寫了__init__()及__str__(),注意super()是呼叫(call)Demo的版本,而非Other,所以SubDemo的hello()也是Demo的版本。
至於Demo無bye(),因此SubDemo繼承Other的bye(),至於bye()當呼呼叫的__str__(),這則是SubDemo改寫後的版本。
中英文術語對照
類別class
父類別superclass
子類別subclass
繼承inherit
多重繼承mutlipleinheritance
繼承inheritance
屬性attribute
方法method
類別
__init__()方法
__str__()方法
__doc__屬性
類別屬性與實體屬性
static方法與類別方法
屬性的封裝
繼承
子類別的方法改寫
多重繼承
多型
__del__()方法
迭代器
參考資料
http://docs.python.org/py3k/tutorial/classes.html
http://docs.python.org/py3k/reference/compound_stmts.html
回Python快速導覽
回Python教材目錄
回首頁
以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest
標籤:
Python3.1快速導覽,
Python3教學
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言(Atom)
搜尋此網誌
RSS訂閱
連結到本站
[email protected]
重要說明
本站教材的設計目標是以高中生到大一程度或程式設計的完全新手為主,尤其《入門指南》系列帶領讀者開發簡單的GUI軟體,簡言之目標為學習開發軟體的流程,其作為學習程式語言的第一本書,而非最後一本書,建議您完成《入門指南》後繼續找尋其他書籍研讀程式設計的技巧及程式語言的細節,語言細節部分也可先參考本站的《快速導覽》或《速查手冊》,謝謝。
本站電子書
GooglePlayBooks
如何自學寫作V1.00
如何自學程式設計V1.00
如何自學程式設計第二部分V2.00
C的一堂課V2.00
C速查手冊V1.00
Python的一堂課V2.00
Python新手之旅V1.10
Python入門指南V4.00
Python速查手冊V2.00
C++入門指南V2.21
C++速查手冊V1.02
Java入門指南V2.11
Swift入門指南V3.00
HTML的一堂課V5.00
CSS的一堂課V1.00
EPUB的一堂課V1.00
iBooksStore
如何自學程式設計V1.00
Python的一堂課V1.00
Python新手之旅V1.10
Python入門指南V2.31
C++入門指南V2.21
C++速查手冊V1.02
Java入門指南V2.11
Swift入門指南V3.00
EPUB的一堂課V1.10
Readmoo
如何自學寫作V1.00
如何自學程式設計V1.00
C速查手冊V1.00
Python新手之旅V1.10
Python入門指南V4.00
Python速查手冊V2.00
C++入門指南V2.20
C++速查手冊V1.02
Java入門指南V2.10
Swift入門指南V3.00
樂天kobo
如何自學程式設計V1.00
如何自學程式設計第二部分V2.00
C的一堂課V2.00
C速查手冊V1.00
Python的一堂課V2.00
Python新手之旅V1.10
Python入門指南V4.00
Python速查手冊V2.00
C++入門指南V2.21
C++速查手冊V1.02
Java入門指南V2.11
HyRead
Python的一堂課V1.00H
Python新手之旅V1.00H
Python入門指南V2.00H
C++入門指南V2.00H
C++速查手冊V1.00H
Java入門指南V2.00H
Swift入門指南V1.00H
印客邦-紙本書
如何自學程式設計(合訂本)V2.00
C++入門指南V2.30(附C的一堂課)
C++速查手冊V1.20
Java入門指南V3.00
Python入門指南V4.10
Swift入門指南V3.00
延伸文章資訊
- 19. Class(類別) — Python 3.10.7 說明文件
Python 的class 提供了所有物件導向程式設計(Object Oriented Programming) 的標準 ... 空間的重要一點是,不同命名空間中的名稱之間絕對沒有關係;舉例來說...
- 2[Python物件導向]Python繼承(Inheritance)實用教學
也就是因為Python的所有類別(Class)直接或間接的繼承(Inheritance)了物件類別(object),所以我們可以看到第二個print()的結果為True。 二、方法覆寫(Meth...
- 3Python 速查手冊- 6.9 多重繼承 - 程式語言教學誌
多重繼承的寫法就是在類別(class) 識別字(identifier) 後面的小括弧加上逗號,逗號後面放父類別的識別字,例如這裡類別D 繼承了A 、 B 、 C 三個類別
- 4Python class設計· parallel_processing
... python class內部沒有public, protected, private的區間,全部都是public,因此若是希望為private value時,應在變數前面加上兩個unde...
- 5Python 中的多重繼承
這通常是在繼承開始跨越路徑時出現歧義的情況下完成的,即當兩個父類也從超級基類派生時。 例如,. Python. pythonCopy class Animals: def __init__ ...