如何在不使用hasattr的情况下为class属性设置默认值

时间:2016-02-05 15:28:41

标签: python-2.7 class attributes

我必须为类实例设置属性,以防它不存在。 我使用下面的代码来实现:

class O(object):
    pass

o = O()
if not hasattr(o, 'some_attr'):
    setattr(o, 'some_attr', None)
print o.some_attr

有没有更好的方法来执行此类操作?

1 个答案:

答案 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