Python多型(Polymorphism)實用教學- 物件導向程式設計學習

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

Q:什麼是抽象方法(Abstract Method)? 要使用抽像方法(Abstract Method)的類別首先要繼承ABC(Abstract Base Class)類別,接著在抽象方法上方加上@a... 我的教室 教室設定 創建教室 創建教室 創建教室 創建教室 Python多型(Polymorphism)實用教學 Mike的Python學院 關注 MikeKu LearnCodeWithMike品牌創辦人 2021/10/21 Python多型(Polymorphism)實用教學 Q:什麼是抽象方法(AbstractMethod)?要使用抽像方法(AbstractMethod)的類別首先要繼承ABC(AbstractBaseClass)類別,接著在抽象方法上方加上@abstractmethod裝飾詞(Decorator),並且不會有實作內容,如下範例:fromabcimportABC,abstractmethodclassLogin(ABC):#登抽象入類別@abstractmethoddeflogin(self):pass由於抽象方法(AbstractMethod)是抽象的,所以只要有抽象方法(AbstractMethod)的類別就稱為抽象類別,是無法建立物件的,必須透過繼承(Inheritance)的類別來進行抽象方法(AbstractMethod)的實作,如下範例:fromabcimportABC,abstractmethodclassLogin(ABC):#登入抽象類別@abstractmethoddeflogin(self):passclassFacebookLogin(Login):#Facebook登入機制deflogin(self):print("Facebookloginimplementation.")fb=FacebookLogin()fb.login()所以,抽象方法(AbstractMethod)通常應用於定義各類別的共同介面,讓未來要增加的需求功能,必須遵守共同的規則進行實作,來達到各類別擁有一致性的介面,不但好維護且易於擴充。

Q:什麼是多型(Polymorphism)?顧名思義,就是同一個介面或方法(Method)可以有多個實作型態。

我們來延伸上面的例子,如果今天應用程式要增加Google及Twitter的登入機制,想必大家應該知道要怎麼做了吧,就是建立各自的類別(Class)繼承(Inheritance)Login抽象類別,接著實作其中的login抽象方法(AbstractMethod),如下範例:fromabcimportABC,abstractmethodclassLogin(ABC):#登入抽象類別@abstractmethoddeflogin(self):passclassFacebookLogin(Login):#Facebook登入機deflogin(self):print("Facebookloginimplementation.")classGoogleLogin(Login):#Google登入deflogin(self):print("Googleloginimplementation.")classTwitterLogin(Login):#Twitter登入deflogin(self):print("Twitterloginimplementation.")fb=FacebookLogin()fb.login()google=GoogleLogin()google.login()twitter=TwitterLogin()twitter.login()各位有沒有發現,來源端不同的類別物件(Object)呼叫同樣的方法(Method)時,卻可以有不同的實作方式,這也就是所謂的多型(Polymorphism)。

其中的原理,就是Python編譯器在執行期間(Runtime)看到三個實體類別(Class)皆繼承(Inheritance)了Login抽象類別,接著在物件(Object)呼叫login()方法(Method)時,Python編譯器則依據呼叫物件(Object)的實體類別(Class)來執行相應的類別實作。

Q:使用多型(Polymorphism)有什麼優點?使用多型(Polymorphism)最大的優點就是易於擴充及降低類別間的相依性。

從這兩個例子可以看到,不論未來要再增加新的登入機制或交通工具,都能非常容易的透過新增類別來進行擴充,並且有一致性的介面。

如果想要學習更多的Python應用教學,歡迎前往LearnCodeWithMike(https://www.learncodewithmike.com/2020/01/python-polymorphism.html )網站觀看更多精彩內容。

GoogleOOPPython物件導向程式設計程式語言軟體程式設計learncodewithmike.com [Python物件導向]Python多型(Polymorphism)實用教學 GoogleOOPPython物件導向程式設計程式語言軟體程式設計1 0 2430拍手留言分享分享到:LineFacebookTwitter複製連結取消 收藏 更多內容來自Mike的Python學院 Mike與104學習精靈合作,在這邊分享LearnCodeWithMike網站上部分的Python「入門教學、爬蟲應用、資料分析與網頁開發」等主題的教學文章,而這也是LearnCodeWithMike品牌的初衷,以簡單易懂的實作幫助大家學習Python程式語言。

​ 關注



請為這篇文章評分?