Python 如何为类的所有实例获取变量值

Python 如何为类的所有实例获取变量值,python,class,object,Python,Class,Object,我有一个包含数千个实例的Python类 每个实例都包含几个变量 我需要为类的所有实例检索特定列表变量的值 我相信这已经结束了 __dict__ 我似乎无法正确地使用语法来获取所需的数据 我知道这是一行简单的代码。有人知道该代码是什么吗?您可以通过以下方式访问对象的所有变量: 返回模块、类、实例或任何其他具有\uuuuuuuu dict\uuu属性的对象的\uuuuu dict\uuuuu属性 因此,只需将对象作为参数传递给vars: vars(obj) 正如克劳斯D所说,您应该维护一个手动

我有一个包含数千个实例的Python类

每个实例都包含几个变量

我需要为类的所有实例检索特定列表变量的值

我相信这已经结束了

__dict__
我似乎无法正确地使用语法来获取所需的数据


我知道这是一行简单的代码。有人知道该代码是什么吗?

您可以通过以下方式访问对象的所有变量:

返回模块、类、实例或任何其他具有
\uuuuuuuu dict\uuu
属性的对象的
\uuuuu dict\uuuuu
属性

因此,只需将对象作为参数传递给
vars

vars(obj) 

正如克劳斯D所说,您应该维护一个手动列表。但是,如果所有这些实例都存在于一个函数的本地范围内,那么下面的代码将显示如何获取它们。但即使这是可能的,我强烈建议你不要做这种事

#! /usr/bin/env python

import random

class myclass():
    def __init__(self, data):
        self.data = data

def main():
    random.seed(42)

    #Create some instances of myclass
    for i in range(10):
        s = "a%02d = myclass(%d)" % (i, random.randint(0, 99))
        print s
        exec(s) in globals(), locals()

    #Extract all instances of myclass from the locals() dict
    instances = dict((k, v) for k, v in locals().items() if isinstance(v, myclass))

    for name in sorted(instances.keys()):
        print "%s : %2d" % (name, instances[name].data)


if __name__ == "__main__":
    main()
输出

a00=myclass(63)
a01=myclass(2)
a02=myclass(27)
a03=myclass(22)
a04=myclass(73)
a05=myclass(67)
a06=myclass(89)
a07=myclass(8)
a08=myclass(42)
a09=myclass(2)
a00:63
a01:2
a02:27
a03:22
a04:73
a05:67
a06:89
a07:8
a08:42
a09:2

您需要展示一个try and类的示例!无法获取类的所有实例的列表。您必须手动维护此类列表。
weakref
模块可能对此有所帮助。