在程序快要结束时,我希望将类的所有实例中的特定变量加载到字典中。
例如:
class Foo(): __init__(self): x = {} foo1 = Foo() foo2 = Foo() foo...etc.
假设实例数量会有所不同,我希望将Foo()的每个实例的x dict加载到新的dict中。我该怎么办?
我在SO中看到的示例假定一个已经具有实例列表。
跟踪实例的一种方法是使用类变量:
class A(object): instances = [] def __init__(self, foo): self.foo = foo A.instances.append(self)
在程序结束时,您可以像下面这样创建字典:
foo_vars = {id(instance): instance.foo for instance in A.instances}
只有一个列表:
>>> a = A(1) >>> b = A(2) >>> A.instances [<__main__.A object at 0x1004d44d0>, <__main__.A object at 0x1004d4510>] >>> id(A.instances) 4299683456 >>> id(a.instances) 4299683456 >>> id(b.instances) 4299683456