我有一个拥有数千个实例的Python类。如何获得一个类的所有实例的变量的值
每个实例都包含多个变量。
我需要检索该类的所有实例的特定列表变量的值。
我相信这与做...
__dict__
我似乎无法得到正确的语法来获得我所需要的数据。
我知道这是一个简单的1行代码。任何人都知道该代码是什么?
我有一个拥有数千个实例的Python类。如何获得一个类的所有实例的变量的值
每个实例都包含多个变量。
我需要检索该类的所有实例的特定列表变量的值。
我相信这与做...
__dict__
我似乎无法得到正确的语法来获得我所需要的数据。
我知道这是一个简单的1行代码。任何人都知道该代码是什么?
正如克劳斯·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
你需要证明你的尝试和类的例子! – Kasramvd 2014-10-17 09:44:50
没有办法得到一个类的所有实例的列表。您将不得不手动维护这样的列表。 'weakref'模块可能对此有所帮助。 – 2014-10-17 09:49:50