我必须为类实例设置属性,以防它不存在。 我使用下面的代码来实现:
class O(object):
pass
o = O()
if not hasattr(o, 'some_attr'):
setattr(o, 'some_attr', None)
print o.some_attr
有没有更好的方法来执行此类操作?
答案 0 :(得分:0)
类及其实例具有由pre-defined __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