2016-12-07 46 views
1

如何從類實例獲取用戶定義的類屬性?我試過這個:從類實例獲取用戶定義的類屬性

class A: 
    FOO = 'foo' 
    BAR = 'bar' 

a = A() 

print(a.__dict__) # {} 
print(vars(a)) # {} 

我使用python 3.5。 有沒有辦法讓他們? 我知道dir(a)返回一個帶有屬性名稱的列表,但我只需要使用已定義的名稱,並將其作爲字典名稱來賦值。

回答

0

試試這個:

In [5]: [x for x in dir(a) if not x.startswith('__')] 
Out[5]: ['BAR', 'FOO'] 
0

你的類命名空間還沒有傳播到實例中定義的變量。您可以使用__calss__屬性實例來訪問類對象然後使用__dict__方法來獲取命名空間中的內容:

>>> {k: v for k, v in a.__class__.__dict__.items() if not k.startswith('__')} 
{'BAR': 'bar', 'FOO': 'foo'} 
+0

我忘記提及,它也應該回到父母屬性 – danielko