全網最適合入門的物件導向程式設計教程:28 類和物件的 Python 實現-Python 程式設計原則、哲學和規範大彙總
摘要:
本文主要介紹了在使用 Python 進行物件導向程式設計時,Python 異常處理的原則-“請求諒解,而非許可”,以及軟體設計和 Python 的程式設計原則,同時介紹了 PEP8 規範。
原文連結:
FreakStudio的部落格
往期推薦:
學嵌入式的你,還不會物件導向??!
全網最適合入門的物件導向程式設計教程:00 物件導向設計方法導論
全網最適合入門的物件導向程式設計教程:01 物件導向程式設計的基本概念
全網最適合入門的物件導向程式設計教程:02 類和物件的 Python 實現-使用 Python 建立類
全網最適合入門的物件導向程式設計教程:03 類和物件的 Python 實現-為自定義類新增屬性
全網最適合入門的物件導向程式設計教程:04 類和物件的Python實現-為自定義類新增方法
全網最適合入門的物件導向程式設計教程:05 類和物件的Python實現-PyCharm程式碼標籤
全網最適合入門的物件導向程式設計教程:06 類和物件的Python實現-自定義類的資料封裝
全網最適合入門的物件導向程式設計教程:07 類和物件的Python實現-型別註解
全網最適合入門的物件導向程式設計教程:08 類和物件的Python實現-@property裝飾器
全網最適合入門的物件導向程式設計教程:09 類和物件的Python實現-類之間的關係
全網最適合入門的物件導向程式設計教程:10 類和物件的Python實現-類的繼承和里氏替換原則
全網最適合入門的物件導向程式設計教程:11 類和物件的Python實現-子類呼叫父類方法
全網最適合入門的物件導向程式設計教程:12 類和物件的Python實現-Python使用logging模組輸出程式執行日誌
全網最適合入門的物件導向程式設計教程:13 類和物件的Python實現-視覺化閱讀程式碼神器Sourcetrail的安裝使用
全網最適合入門的物件導向程式設計教程:全網最適合入門的物件導向程式設計教程:14 類和物件的Python實現-類的靜態方法和類方法
全網最適合入門的物件導向程式設計教程:15 類和物件的 Python 實現-__slots__魔法方法
全網最適合入門的物件導向程式設計教程:16 類和物件的Python實現-多型、方法重寫與開閉原則
全網最適合入門的物件導向程式設計教程:17 類和物件的Python實現-鴨子型別與“file-like object“
全網最適合入門的物件導向程式設計教程:18 類和物件的Python實現-多重繼承與PyQtGraph串列埠資料繪製曲線圖
全網最適合入門的物件導向程式設計教程:19 類和物件的 Python 實現-使用 PyCharm 自動生成檔案註釋和函式註釋
全網最適合入門的物件導向程式設計教程:20 類和物件的Python實現-組合關係的實現與CSV檔案儲存
全網最適合入門的物件導向程式設計教程:21 類和物件的Python實現-多檔案的組織:模組module和包package
全網最適合入門的物件導向程式設計教程:22 類和物件的Python實現-異常和語法錯誤
全網最適合入門的物件導向程式設計教程:23 類和物件的Python實現-丟擲異常
全網最適合入門的物件導向程式設計教程:24 類和物件的Python實現-異常的捕獲與處理
全網最適合入門的物件導向程式設計教程:25 類和物件的Python實現-Python判斷輸入資料型別
全網最適合入門的物件導向程式設計教程:26 類和物件的Python實現-上下文管理器和with語句
全網最適合入門的物件導向程式設計教程:27 類和物件的Python實現-Python中異常層級與自定義異常類的實現
更多精彩內容可看:
給你的 Python 加加速:一文速通 Python 平行計算
一文搞懂 CM3 微控制器除錯原理
肝了半個月,嵌入式技術棧大彙總出爐
電子計算機類比賽的“武林秘籍”
一個MicroPython的開源專案集錦:awesome-micropython,包含各個方面的Micropython工具庫
文件和程式碼獲取:
可訪問如下連結進行對文件下載:
https://github.com/leezisheng/Doc
本文件主要介紹如何使用 Python 進行物件導向程式設計,需要讀者對 Python 語法和微控制器開發具有基本瞭解。相比其他講解 Python 物件導向程式設計的部落格或書籍而言,本文件更加詳細、側重於嵌入式上位機應用,以上位機和下位機的常見串列埠資料收發、資料處理、動態圖繪製等為應用例項,同時使用 Sourcetrail 程式碼軟體對程式碼進行視覺化閱讀便於讀者理解。
相關示例程式碼獲取連結如下:https://github.com/leezisheng/Python-OOP-Demo
正文
Python 異常處理原則“請求諒解,而非許可”
我們可能不難發現異常處理完全可以用 if...elif...else 結構來完成,那為什麼還要使用異常呢?實際上,Python 程式設計師通常秉持著“請求諒解,而非許可”的原則,即他們首先執行程式碼,然後解決出現的錯誤。另一種與之相反的“三思而後行”的原則,實際上恰恰相反。
這樣做有很多理由,但最主要的一點是,避免不必要的 CPU 資源消耗在檢查極少出現的情況上。因此,對於極少數的例外情況,使用異常處理是明智之舉。進一步探討這一點,我們可以發現異常處理的語法在流程控制中同樣非常有效。就像 if 語句一樣,異常可以用於決策、分支和資訊傳遞。在 Python 程式碼中,面對可能出現的錯誤情況,相比於各種各樣的判斷,使用異常處理結構更容易閱讀和維護。
軟體設計的六大原則
-
開放封閉原則(Open-Closed Principle, OCP)
- 軟體實體(類、模組、函式等)應對擴充套件開放,對修改關閉
- 透過抽象和繼承等機制實現
-
里氏替換原則(Liskov Substitution Principle, LSP)
- 子類可以透明地替換父類使用
- 子類與父類的引數和返回值應一致
-
依賴倒置原則(Dependency Inversion Principle, DIP)
- 高層模組不應依賴低層模組,二者都依賴抽象
- 抽象不應依賴細節,細節應依賴抽象
-
介面隔離原則(Interface Segregation Principle, ISP)
- 客戶端不應依賴它不需要的介面
- 介面應保持單一和最小粒度
-
迪米特法則(Law of Demeter, LoD)
- 一個軟體實體應當儘可能少地與其他實體發生相互作用
- 高內聚,低耦合
-
單一職責原則(Single Responsibility Principle, SRP)
- 一個類應該僅有一個引起它變化的原因
- 職責應該明確,避免重複
Python 六大程式設計原則
-
KISS (Keep It Simple, Stupid)
- 保持程式碼簡單明瞭,儘量避免複雜的設計
- 簡單易懂的程式碼更容易編寫、維護和除錯
-
DRY (Don't Repeat Yourself)
- 避免重複程式碼,利用函式、模組等特性進行抽象和封裝
- 減少重複勞動,提高編碼效率
-
Pythonic
- 充分利用 Python 的語法特性和標準庫
- 遵循 PEP 8 等 Python 編碼規範,編寫優雅、高效的程式碼
-
Zen of Python
- 遵循 Python 的 20 條設計哲學原則,如"美勝於醜"、"明確勝於隱晦"等
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren't special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one-- and preferably only one --obvious way to do it.
- Although that way may not be obvious at first unless you're Dutch.
- Now is better than never.
- Although never is often better than right now.
- If the implementation is hard to explain, it's a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea -- let's do more of those!
- Python is designed to be readable, and, well, Pythonic.
- 體現 Python 崇尚簡單、優雅的理念
- 遵循 Python 的 20 條設計哲學原則,如"美勝於醜"、"明確勝於隱晦"等
-
Testing Is Important
- 重視測試驅動開發,編寫全面的單元測試和整合測試
- 確保程式碼質量,方便重構和維護
-
Batteries Included
- 充分利用 Python 豐富的標準庫和第三方庫
- 減少重複造輪子,提高開發效率
PEP8 規範
PEP 8 是 Python 程式設計的事實標準程式碼風格指南,其主要內容包括:
-
命名約定
- 變數、函式、模組使用小寫字母加下劃線
- 類名使用駝峰式命名
- 常量全部大寫
- 受保護的例項屬性以單個下劃線開頭
- 私有的例項屬性以兩個下劃線開頭
-
縮排和空白
- 使用 4 個空格作為縮排單位
- 頂層函式和類定義之間空兩行
- 二元運算子兩側各加一個空格
-
匯入風格
- 每個 import 語句獨佔一行
- 匯入順序為:標準庫、第三方庫、自定義庫
-
行長限制
- 每行不超過 79 個字元
- 如果超出可以使用括號換行
-
註釋和文件化
- 使用英文編寫註釋和文件
- 函式使用 docstring 描述
-
其他建議
- 不要使用製表符進行縮排
- 避免使用單字母變數名
- 慎用
from module import *
PEP 8 的目的是透過一致的程式碼風格來提高程式碼的可讀性和可維護性。遵守這些約定可以讓 Python 程式碼更加 Pythonic。
PEP 8 規範原文可在如下連結檢視:
https://peps.python.org/pep-0008/
中文版可在如下連結檢視:
https://www.cnblogs.com/bymo/p/9567140.html