這是本系列的最後一篇。 此實作旨在修復我在上一篇文章中描述的樣板程式碼的主要缺點。 我將此實作稱為動態屬性類別。
以下類別圖顯示了 DynamicConfiguration 可重複使用類別以及開發人員使用此功能所需的支援資料結構。 它仍然提供版本 2 的所有基本功能,包括自動啟動捆綁、建立缺失部分和鍵值。
我將展示尋求使用此類的應用程式的完整原始程式碼。 我正在使用我們在前 3 篇文章中討論過的屬性。
第 45-50 行是您必須編寫的程式碼。 本質上,您只需確保傳遞檔案名稱、模組名稱和設定部分。 這個Sections類型來自DynamicConfiguration模組。
第 21-28 行和第 30-36 行是 ValueDescriptions 字典。 KeyName 是屬性並指向 ValueDescription。 請注意,有關如何持久化枚舉的指示符已從先前實作的裝飾器移至 ValueDescription 中的布林屬性。
如果仔細查看 DynamicConfiguration 的類別圖,您會發現它實作了兩個 Python magic 方法。 它們是 __getattr__(self, name)__ 和 __setattr__(self, name, value)__ 方法。
以下是 __getattr__ 的代碼。 這看起來非常像我們在版本 2 中使用的裝飾器。關鍵工作發生在第 14 行對受保護方法 _lookupKey() 的呼叫上。 它會傳回屬性的完整描述,以便我們可以模擬屬性檢索。
以下是 __setattr__() 的實作。 請注意第 22-27 行中對枚舉的支援以及第 30 行中的 直寫 功能。
存取和修改屬性與版本 2 完全相同。
上面的程式碼片段產生以下輸出。
本文的原始碼在這裡。 請參閱支援類 SingletonV3。 查看
的實現以上是邁向輕鬆的 Python 設定檔版本 3的詳細內容。更多資訊請關注PHP中文網其他相關文章!