>如果类实例不存在,我必须为类实例设置属性。我正在使用下面的代码来实现这一点:
class O(object):
pass
o = O()
if not hasattr(o, 'some_attr'):
setattr(o, 'some_attr', None)
print o.some_attr
有没有更好的方法来执行这样的动作?
类及其实例具有自己的命名空间,由预定义的__dict__
属性表示,该属性是字典,因此可以使用方法setdefault代替if hasattr -> setattr
流将新属性添加到类实例:
class O():
pass
o = O()
o.__dict__.setdefault('some_attr', None)
print o.some_attr
方法由@MartijnPieters
:此外,我们还可以使用 vars 函数访问__dict__
属性并调用setdefault
方法,如上面的代码示例所示:
vars(o).setdefault('some_attr', None)
print o.some_attr