首頁 >後端開發 >Python教學 >如何為字典條目等類別新增動態屬性?

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

Linda Hamilton
Linda Hamilton原創
2024-11-12 10:55:03784瀏覽

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

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

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

以上是如何為字典條目等類別新增動態屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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