首頁 >後端開發 >Python教學 >邁向輕鬆的 Python 設定檔版本 3

邁向輕鬆的 Python 設定檔版本 3

Barbara Streisand
Barbara Streisand原創
2024-12-20 14:26:16397瀏覽

介紹

這是本系列的最後一篇。 此實作旨在修復我在上一篇文章中描述的樣板程式碼的主要缺點。 我將此實作稱為動態屬性類別。

班級代表

以下類別圖顯示了 DynamicConfiguration 可重複使用類別以及開發人員使用此功能所需的支援資料結構。 它仍然提供版本 2 的所有基本功能,包括自動啟動捆綁、建立缺失部分和鍵值。

Towards Effortless Python Configuration Files Version 3

開發者程式碼說明

我將展示尋求使用此類的應用程式的完整原始程式碼。 我正在使用我們在前 3 篇文章中討論過的屬性。

第 45-50 行是您必須編寫的程式碼。 本質上,您只需確保傳遞檔案名稱、模組名稱和設定部分。 這個Sections類型來自DynamicConfiguration模組。

第 21-28 行和第 30-36 行是 ValueDescriptions 字典。 KeyName 是屬性並指向 ValueDescription。 請注意,有關如何持久化枚舉的指示符已從先前實作的裝飾器移至 ValueDescription 中的布林屬性。

實現代碼說明

如果仔細查看 DynamicConfiguration 的類別圖,您會發現它實作了兩個 Python magic 方法。 它們是 __getattr__(self, name)__ 和 __setattr__(self, name, value)__ 方法。

  • __getattr__(self, name)__ 允許開發人員定義當類別使用者嘗試存取不存在的屬性時的行為。
  • __setattr__(self, name, value)__ 允許開發人員定義指派給屬性的行為。

以下是 __getattr__ 的代碼。 這看起來非常像我們在版本 2 中使用的裝飾器。關鍵工作發生在第 14 行對受保護方法 _lookupKey() 的呼叫上。 它會傳回屬性的完整描述,以便我們可以模擬屬性檢索。

以下是 __setattr__() 的實作。 請注意第 22-27 行中對枚舉的支援以及第 30 行中的 直寫 功能。

訪問和修改屬性

存取和修改屬性與版本 2 完全相同。

上面的程式碼片段產生以下輸出。

結論

本文的原始碼在這裡。 請參閱支援類 SingletonV3。 查看

的實現

優點

  • 輕鬆型別安全地存取應用程式屬性
  • 用於不同實作的可重複使用父類別
  • 資料結構驅動的程式碼,用於新增部分和配置鍵
  • 沒有屬性的樣板程式碼

缺點

  • 由於沒有實現任何實際屬性,我們沒有獲得 IDE 對它們的支援
  • 另外,由於鍵的尋找方法,不同部分的不同鍵不能有相同的名稱

以上是邁向輕鬆的 Python 設定檔版本 3的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn