2010-02-19 43 views
0

。如果我有:檢索所有變量的鍵對象

class A(object): 
    varA = 1 

inst = A() 

那麼我將如何檢索研究所所有變量的鑰匙?我想要的東西像["varA"]

到目前爲止,我已經得到這樣的:

vars(inst.__class__).keys() #returns ['__dict__', '__weakref__', '__module__', 'varA', '__doc__'] 

我很好,我會忽略雙下瓦爾。我的問題是多層次的繼承如:

class A(object): 
    varA = 1 

class B(A): 
    varB = 2 

inst = B() 
vars(inst.__class__).keys() #returns ['__module__', '__doc__', 'varB'] 

但我想檢索varB和varA。任何想法我會如何去做這件事?

我也試過:

vars(super(B, inst).__class__).keys()+vars(inst.__class__).keys() 

但是這並沒有做什麼,我的預期。

如果很重要,我使用Python 2.6。

編輯:我其實只是在非常簡單的方法來做到這一點跌跌撞撞: dir(inst)

+0

我不知道。我會改變我的例子以符合標準。 – Ponkadoodle 2010-02-21 01:13:37

回答

1

有一個Python模塊,叫inspect運行時的自省。也許inspect.getmembers可以幫助你...

+0

是的,這正是我想要的。我過去曾使用過檢查,但我忘記了它的能力。 – Ponkadoodle 2010-02-19 23:54:43