全網最適合入門的物件導向程式設計教程:09 類和物件的 Python 實現-類之間的關係,你知道多少?
摘要:
本文主要對類之間的關係進行了基本介紹,包括繼承、組合、依賴關係,並輔以現實中的例子加以講解,同時說明了不同關係的特點和應用場景。
原文連結:
FreakStudio 的部落格
往期推薦:
學嵌入式的你,還不會物件導向??!
全網最適合入門的物件導向程式設計教程:00 物件導向設計方法導論
全網最適合入門的物件導向程式設計教程:01 物件導向程式設計的基本概念
全網最適合入門的物件導向程式設計教程:02 類和物件的 Python 實現-使用 Python 建立類
全網最適合入門的物件導向程式設計教程:03 類和物件的 Python 實現-為自定義類新增屬性
全網最適合入門的物件導向程式設計教程:04 類和物件的Python實現-為自定義類新增方法
全網最適合入門的物件導向程式設計教程:05 類和物件的Python實現-PyCharm程式碼標籤
全網最適合入門的物件導向程式設計教程:06 類和物件的Python實現-自定義類的資料封裝
全網最適合入門的物件導向程式設計教程:07 類和物件的Python實現-型別註解
全網最適合入門的物件導向程式設計教程:08 類和物件的Python實現-@property裝飾器
更多精彩內容可看:
給你的 Python 加加速:一文速通 Python 平行計算
一文搞懂 CM3 微控制器除錯原理
肝了半個月,嵌入式技術棧大彙總出爐
電子計算機類比賽的“武林秘籍”
一個MicroPython的開源專案集錦:awesome-micropython,包含各個方面的Micropython工具庫
文件和程式碼獲取
可訪問如下連結進行對文件下載:
https://github.com/leezisheng/Doc
本文件主要介紹如何使用 Python 進行物件導向程式設計,需要讀者對 Python 語法和微控制器開發具有基本瞭解。相比其他講解 Python 物件導向程式設計的部落格或書籍而言,本文件更加詳細、側重於嵌入式上位機應用,以上位機和下位機的常見串列埠資料收發、資料處理、動態圖繪製等為應用例項,同時使用 Sourcetrail 程式碼軟體對程式碼進行視覺化閱讀便於讀者理解。
相關示例程式碼獲取連結如下:https://github.com/leezisheng/Python-OOP-Demo
正文
簡單的說,類和類之間的關係有三種:is-a、has-a 和 use-a 關係:
- is-a 關係也叫繼承或泛化,比如學生和人的關係、手機和電子產品的關係都屬於繼承關係。在物件導向程式設計中,一個類可以從另一個類中繼承屬性與方法。
- has-a 關係通常稱之為關聯,比如部門和員工的關係,汽車和引擎的關係都屬於關聯關係;關聯關係如果是整體和部分的關聯,那麼我們稱之為聚合關係;如果整體進一步負責了部分的生命週期(整體和部分是不可分割的,同時同在也同時消亡),那麼這種就是最強的關聯關係,我們稱之為合成/組合關係。
- use-a 關係通常稱之為依賴,比如司機有一個駕駛的行為(方法),其中(的引數)使用到了汽車,那麼司機和汽車的關係就是依賴關係。
具體形象可以看下面的 UML 類圖:
利用類之間的這些關係,我們可以在已有類的基礎上來完成某些操作,也可以在已有類的基礎上建立新的類,這些都是實現程式碼複用的重要手段。複用現有的程式碼不僅可以減少開發的工作量,也有利於程式碼的管理和維護,這是我們在日常工作中都會使用到的技術手段。