」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何為字典條目等類別新增動態屬性?

如何為字典條目等類別新增動態屬性?

發佈於2024-11-08
瀏覽:766

How to Add Dynamic Properties to Classes like Dictionary Entries?

在類別中加入動態屬性

在使用類比類別模擬資料庫結果集的過程中,出現了一個挑戰:如何指派動態屬性實例的屬性類似字典的屬性。這涉及創建行為類似於具有特定值的屬性的屬性。

最初,一種有前景的方法涉及使用以下方式分配屬性:

setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

然而,這產生了屬性對象,而不是所需的行為。

解決方案在於為類別新增屬性本身,而不是個別實例。它的運作原理如下:

class Foo(object):
    pass

foo = Foo()
foo.a = 3
Foo.b = property(lambda self: self.a   1)
print(foo.b)  # Prints 4

在此範例中,我們使用屬性描述符向 Foo 類別新增屬性 b。當存取 foo.b 時,Python 呼叫描述符的 __get__ 方法並將類別實例作為參數傳遞。然後 __get__ 方法傳回屬性的值,該值計算為 self.a 1。

屬性提供了一種方便的方法來定義屬性的自訂行為,有效地公開了 Python OO 系統的管道。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3