1

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

例如。

class Foo():
    pass

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

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

我如何找出存在多少个 Bar 类的实例以及运行时的名称?

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

谢谢

4

2 回答 2

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

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

于 2012-10-13T05:58:25.360 回答
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
于 2012-10-13T06:08:10.270 回答