如何跟踪类实例?

2024-01-05

在程序结束时,我希望将类的所有实例中的特定变量加载到字典中。

例如:

class Foo():
    def __init__(self):
        self.x = {}

foo1 = Foo()
foo2 = Foo()
...

假设实例的数量会有所不同,我希望将 Foo() 每个实例的 x 字典加载到一个新字典中。我该怎么做呢?

我在 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    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跟踪类实例? 的相关文章

随机推荐