在類別中加入動態屬性
在使用類比類別模擬資料庫結果集的過程中,出現了一個挑戰:如何指派動態屬性實例的屬性類似字典的屬性。這涉及創建行為類似於具有特定值的屬性的屬性。
最初,一種有前景的方法涉及使用以下方式分配屬性:
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