如何在python中运行时查找类的实例

时间:2012-10-13 05:40:07

标签: python

如何在python中找到运行时类的实例

例如。

class Foo():
    pass

class Bar(Foo):
    def __init__(self, a):
            print a

inst_b1 = Bar(3)
inst_b2 = Bar('Hello World!!!')

我如何找出类Bar的实例数以及运行时的名称?

另外,因为我想在运行时使用它们,将它们放在自定义字典中或从变量的通用字典中获取它是更好的解决方案(使用vars())。

由于

2 个答案:

答案 0 :(得分:3)

class Bar(Foo):
    instances = []
    def __init__(self, a):
            print a
            Bar.instances.append(self)

inst_b1 = Bar(3)
inst_b2 = Bar('Hello World!!!')
print len(Bar.instances)
print Bar.instances

获取分配给它的变量名称要复杂得多......

答案 1 :(得分:3)

可以这样做多少:

import gc
n_Bars = sum(1 for obj in gc.get_objects() if isinstance(obj,Bar))

如果你也想要他们的名字,你可能最好使用dict而不是单独的变量。

修改 我只想到了一个黑客来获取这些名字:

for obj_name in dir():
    if isinstance(eval(obj_name), Bar):
        print obj_name