2014-09-05 69 views
0

比較對象的屬性和字典

class Results(object): 
    foo = 1 
    bar = 1 
r = Results() 
r.__dict__ 
Out[54]: {} 

class Results(object): 
    def __init__(self): 
     self.foo = 1 
     self.bar = 1 
r = Results() 
r.__dict__ 
Out[57]: {'foo': 1, 'bar': 1} 

我已經習慣了短期班做的第一情況下與大部分持有的屬性,它的短邏輯。 r.foo將適用於這兩種情況,但顯然字典getter不會。

難道有人不久可以解釋在兩種方式建立類的差異?有沒有一種簡單的方法來協調第一種類型,這樣.__dict__實際上會顯示所有的屬性?

+0

爲什麼你想首先使用'__dict__'? – 2014-09-05 15:32:25

+0

我想將一個'pandas'數據框中的對象屬性保存。 – FooBar 2014-09-05 15:35:54

+0

我會使用'vars()'而不是'__dict__',但那也只會返回實例字典。下一個選項是通過'dir()'循環,然後使用'getattr()'訪問屬性。 – 2014-09-05 16:01:48

回答

4

區別在於第一種情況,成員是類,而在第二種情況下,它們是對象的成員。在第一種情況下,您可以執行Results.__dict__以查看情況。