2012-05-26 135 views
2

如何獲得哪些變量在類中定義的列表,而不導入其中的類?如何知道在一個類中定義了哪些變量

vars(obj)返回所有在瓦爾類,不包括不需要的bliltin瓦爾,像__doc____file____name____package__ospdb

+0

你能張貼也許一個小例子:利用強制執行內置功能的編碼約定由雙下劃線字符('__builtin__')包圍? – jamylak

+1

你是指在一個類或模塊中定義的變量嗎?我期望在'vars()'中看到類似'__file__'的變量作爲模塊,但不能用於類。另外,一個類導入模塊是相當不尋常的,但對於一個模塊來說這是很常見的。 (在Python中,與Java不同,您通常不會將每個類放在其自己的模塊中。) –

+0

是的,我混淆了模塊和類。 – iTayb

回答

1

您有幾種方式來獲得無論是class變量或實例變量。

class foo: 
    baz = 51 
    def __init__(self): 
     self.bar = 42 

>>> vars(foo) 
{'__doc__': None, 
'__init__': <function __init__ at 0x02A35B70>, 
'__module__': '__main__', 
'baz': 51} 
>>> {k:v for k,v in vars(foo).items() if k[:2]!="__" and k[-2:]!="__"} 
{'baz': 51} 
>>> obj = foo() 
>>> vars(obj) 
{'bar': 42} 
0

望着醫生,我不知道是否瓦爾是你想要的使用

沒有參數,vars()就像locals()一樣行事。請注意,本地字典僅用於讀取,因爲本地字典的更新被忽略。

I see this question on SO,這看起來像你想要的。

讓我知道,如果我錯了

相關問題