首頁 >後端開發 >Python教學 >如何動態新增屬性到Python類別?

如何動態新增屬性到Python類別?

Barbara Streisand
Barbara Streisand原創
2024-11-14 09:17:01805瀏覽

How to Dynamically Add Properties to a Python Class?

如何動態新增屬性

在Python 中,可以動態建立實例屬性,讓您可以靈活地修改類別在運行時的行為。其實作方式如下:

您嘗試的第一種方法是不正確的,因為它將 c.ab 設定為屬性物件而不是實際值。要正確新增屬性,您需要修改類別本身,而不是實例。

class C(dict):
    pass

ks = ['ab', 'cd']
vs = [100, 200]

for i, k in enumerate(ks):
    # Define the property using classmethod
    setattr(C, k, property(lambda self: vs[i]))

c = C()
print(c.ab)  # Outputs 100

在這個更新的程式碼中,我們將 setattr 呼叫定義為類別方法,這確保將屬性新增到類別而不是實例。屬性中的 lambda 函數從 vs 清單中傳回對應的值。

屬性也可以用來定義動態 getter 和 setter 函數,為屬性處理提供更大的彈性。請記住,屬性新增只能在類別層級完成,而不能在實例層級完成,這使其成為自訂類別行為的強大工具。

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

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