跟踪数据收集的类实例
假设您正在接近程序末尾,并且需要从多个变量中提取特定变量用于填充字典的类的实例。当处理包含需要聚合或分析的基本数据的对象时,可能会出现此任务。
为了说明该问题,请考虑这个简化的类结构:
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