用最直白的語言解釋最複雜的概念,一系列教學讓你在短時間內掌握 Python
今天來講一下「多型(Polymorphism)」跟「抽象類別(Abstract Class)」,有延伸到上一篇《繼承》談過的東西喔!已經忘記的話快去複習一下吧~
不再迷茫!手把手的Python入門教學-繼承
多型(Polymorphism)
同一個名稱的方法(Method)在不同類別內有不同功能
上一篇《繼承》提過的「覆寫」就是多型的其中一個表現

多型 範例
Animal
繼承而來的方法 speak
,實際輸出卻不相同,因位子類別各自覆寫了一個新的 speak
方法抽象方法(Abstract Method)
只能被用來繼承的方法
含有抽象方法的類別即為抽象類別(Abstract Class),無法建立物件
步驟:
- 導入 abc 模組
- 抽象類別需繼承 ABC 類別
- 在抽象方法上方加上
@abstractmethod
裝飾詞*底下有關於裝飾詞的補充

抽象方法 範例
由上面範例可以發現,即使在父類別 Animal
中的抽象方法 speak
有回傳值,但子類別 Dog
仍無法直接 pass
,因為抽象方法不能完全被繼承,若子類別沒有覆寫 speak
就會出現 TypeError: Can't instantiate abstract class Dog with abstract method speak
(如下圖)

抽象方法 TypeError
補充:裝飾詞(Decorator)
用來「包裝函式」,不修改原本代碼的前提下添加額外功能
語法:在函式定義前加上 @function_name

裝飾詞 範例
可以發現透過在函式前加上裝飾詞 @decorate
,讓函式 tree()
加上了 decorate()
的功能
喜歡別忘了給我個讚或按下追蹤喔😊