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

时间:2014-10-17 09:42:58

标签: python class object

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

每个实例都包含几个变量。

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

我相信它已经完成......

__dict__

我似乎无法正确获取所需数据的语法。

我知道这是一行简单的代码。有谁知道那段代码是什么?

2 个答案:

答案 0 :(得分:1)

正如Klaus 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

答案 1 :(得分:0)

您可以使用vars访问对象的所有变量:

  

返回具有__dict__属性的模块,类,实例或任何其他对象的__dict__属性。

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

vars(obj)