[Python教學] 物件導向-Class類的封裝/繼承/多型

python 物件導向是什麼

在上一篇,我們解釋了 Python 中一切皆為物件,和什麼是物件 Object
此篇將帶大家了解 Python 物件導向特性,從最初的 Class 類別定義開始、到物件導向的三大核心特性:繼承、封裝和多型,都有詳細的筆記和解釋教學。

 ▍為什麼要學習物件導向設計原因:

  1. 使程式碼的維護和擴充更容易
  2. 使人更容易閱讀理解程式碼邏輯

 ▍本篇大綱

  1. 首先用 Class 來定義類別
  2. OOP 特性一. 繼承 (inheritance)
  3. OOP 特性二. 封裝 (encapsulation)
  4. OOP 特性三. 多型 (polymorphism)
  5. 補充:類的其他呼叫方式

首先用 Class 來定義類別

在物件導向中,類別是所有共同物件成員的抽象描述,它定義該類別物件共同具有的屬性,及實現該物件的方法。

Python 建立 class,通常類名採用大寫 (下面範例為 Employee ),在類中可以定義屬性和方法。

以下為簡單的 class 類範例:
1. self.working_hour = 0 為定義屬性
2. def work(self): 為定義方法

▍Python class 自由度很高,定義屬性的三種方法

▍物件導向有三大基本特性,分別是:

  1. 封裝 (encapsulation)
  2. 繼承 (inheritance)
  3. 多型 (polymorphism)

特性一. 繼承 (inheritance)

▍簡單來說:繼承就像是生活中,子女繼承父母的財產一樣。

實作 class 繼承範例:首先 Employee 是這次的父親,而 Andy 是繼承 Employee 的孩子

  1. 程式範例第四行 class Andy(Employee),這邊讓 Andy 繼承 Employee物件
  2. 程式範例第六行 super().init(),這邊 super 是呼叫父類別的語法,所以繼承了父親的能力
  3. 程式範例第十行 print(‘tree:’, self.cut_tree),繼承後即可調用父親能力

而如果子類有與父類擁有同名的函式,則子類會會覆蓋掉父類的函式。

特性二. 封裝 (encapsulation)

▍簡單來說:隱藏程式實現細節只保留下接口,使程式容易模組化。

封裝從字面上理解就是包裝的意思,像是手機,從開機、打電話到上網我們都都不知道背後具題實現細節,但只需要按下按鈕就可以完成,這功能就是封裝。

以下範例 work() 就是封裝的表現,可以讓外部使用者不需考慮內部實作而直接呼叫使用。

若是有不想被呼叫的變數,直接在前面加上 __ 像是 __sleep即可以成為私有變數,如果使用者呼叫 __sleep 時則會噴 object has no attribute 的錯誤。

特性三. 多型 (polymorphism)

▍簡單來說:呼叫同名的方法時,會得到不同的結果。

如下範例 Employee、Andy 和 Joy 類別都同時擁有 work 的方法,但呼叫 w.work()、w1.work()、w2.work() 時卻有各自的表現形態。Python 會根據呼叫的類別來決定要執行哪個方法實作,這就是多型的意思。

補充:類的其他呼叫方式

[Python教學]物件導向-Class類的封裝/繼承/多型 結束囉,感謝收看!

關於 OOP 物件導向教學的延伸閱讀:

▍本站的其他相關教學:

▍其他相關教學:

1. [Python 環境設置] 有一個乾淨的 Python 環境很重要,推薦你試試看 virtualenv 和 pyenv 打造乾淨的環境:
[Python教學] 使用 pyenv 和 virtualenv 打造 Python 環境配置

2. [Git 入門教學] Git 總是學了又忘?整理了 Git 入門四步驟,Git 時光機 (退版或版本切換),和如何優雅的寫好 Git Commit,這篇推薦給你:
[Git教學] 初心者懶人包 Git 入門

3. [爬蟲 + 數據分析] 爬蟲不知道要爬什麼嗎?筆者寫了蝦皮爬蟲和整理成競品賣家分析報告,想找靈感可以看看:
[非同步爬蟲] 蝦皮賣家爬蟲 GitHub 分享
[數據分析] 蝦皮賣家競品分析報告

4. [Flask 教學] 想試試看 Python 架設網站嗎?筆者整理了 Flask 學習路線圖,共 30 篇文章組成,有興趣可以收藏:
[Flask 教學] Flask 學習路線圖

5. [VSCode 推薦] 寫程式有一個好用方便上手的 IDE 編輯器很重要,列出了筆者常用的 5 個擴充套件,推薦給你試試:
Visual Studio Code 必備的 5 個擴充和小常識

有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *