在不使用 hasattr 的情况下设置类属性的默认值的方法



>如果类实例不存在,我必须为类实例设置属性。我正在使用下面的代码来实现这一点:

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

最新更新