追蹤資料收集的類別實例
假設您正在接近程式末尾,並且需要從多個變數中提取特定變數來填充字典的類別的實例。當處理包含需要聚合或分析的基本資料的物件時,可能會出現此任務。
為了說明這個問題,請考慮這個簡化的類別結構:
class Foo():
def __init__(self):
self.x = {}
foo1 = Foo()
foo2 = Foo()
現在,假設您想要將 Foo() 的每個實例中的字典 x 收集到一個新字典中,而不管實例的數量。
傳統上,解決方案通常依賴預先定義的實例清單。然而,在實際場景中,實例的數量可能會有所不同,您可能無法立即存取它們的清單。
追蹤類別實例的一個有效解決方案是利用類別變數:
class A(object):
instances = []
def __init__(self, foo):
self.foo = foo
A.instances.append(self)
使用此方法,每次建立 A 的實例時,它都會自動加入到實例清單中。在程式結束時,您可以輕鬆存取實例清單並提取字典所需的資料:
foo_vars = {id(instance): instance.foo for instance in A.instances}
透過維護單一實例列表,您可以輕鬆追蹤和存取A 類別的所有實例。這種方法提供了一種動態且靈活的方式來從類別實例收集數據,即使它們的數量未知或可變。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3