Python 3.1 快速導覽- 類別多重繼承

文章推薦指數: 80 %
投票人數:10人

多重繼承(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



請為這篇文章評分?