如何動態新增屬性
在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中文網其他相關文章!