2012-10-13 26 views
1

如何在Python中運行時查找類的實例如何在運行時在Python中找到類的實例

例如,

class Foo(): 
    pass 

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

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

我將如何找出多少個類Bar的實例存在,並在運行時有名稱?

另外,因爲我想在運行時使用它們,有什麼會是更好的解決方案,讓他們在自定義字典或從變量的通用字典(使用變量())。

感謝

回答

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 

它的複雜得多,讓你分配給它的變量名...

+0

感謝,這個我一直在尋找.. –

3

多少可以這樣對待:

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

如果你也想他們的名字,你可能會更好使用字典而不是單獨的變量。

編輯: 我只是想一個黑客獲取的名字太:

for obj_name in dir(): 
    if isinstance(eval(obj_name), Bar): 
     print obj_name 
相關問題