如何跟踪类实例?
发布于 2021-01-29 17:44:48
在程序快要结束时,我希望将类的所有实例中的特定变量加载到字典中。
例如:
class Foo():
__init__(self):
x = {}
foo1 = Foo()
foo2 = Foo()
foo...etc.
假设实例数量会有所不同,我希望将Foo()的每个实例的x dict加载到新的dict中。我该怎么办?
我在SO中看到的示例假定一个已经具有实例列表。
关注者
0
被浏览
50
1 个回答
-
跟踪实例的一种方法是使用类变量:
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