Skip to content

descriptor

Fluent Python 讀書筆記(七)

動態屬性與特性

  • 方法(method)只是一種可以被呼叫的屬性(attribute)
  • 特性(property)可以用來代替公開的資料屬性,不會變動到類別介面
  • 編寫動態屬性,是框架作者會採取的一種中繼編程(metaprogramming)
  • 從任意來源產生或模擬動態屬性名稱,都要處理一個問題;原始資料中的 key 可能不適合當成屬性名稱,例如 key 是關鍵字(keyword.iskeyword())或非法的識別符(s.isidentifier()

範例:使用動態屬性來探索 JSON 格式的資料

透過遞迴來建構,可自動處理嵌套的映射與串列

留意這裡沒有對查詢進行任何快取或轉換


建構實例的特殊方法是類別方法 __new__,他可以回傳完全不同的實例,在這種情況下解譯器不會呼叫 __init__

以下為建構實例的虛擬程式

Read More »Fluent Python 讀書筆記(七)