2016-02-05 88 views

回答

0

類及其實例有自己的pre-defined__dict__屬性,是字典代表的命名空間,因此方法setdefault可以用來代替if hasattr -> setattr流動的新屬性添加到類的實例:

class O(): 
    pass 

o = O() 
o.__dict__.setdefault('some_attr', None) 

print o.some_attr 

的方法通過sugggested @MartijnPieters

此外,我們可以訪問__dict__屬性與vars函數和調用setdefault方法爲在上面的代碼示例中:

vars(o).setdefault('some_attr', None) 
print o.some_attr 
+0

我會使用'vars(o)'(就像你使用'len(obj)'而不是'obj .__ len __()'。 –

+0

@MartijnPieters感謝您的建議!這可能是執行此類操作的首選方法) –

+0

Python 3.1:'vars([object])'**注意:**不應修改返回的字典:對相應符號表的影響未定義。 (https://docs.python.org/3.1/library/functions.html#vars) – Valentin

相關問題