2016-02-05 82 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

相关问题