Python 2.7 在不使用hasattr的情况下为class属性设置默认值的方法
我必须为类实例设置属性,以防它不存在。 我正在使用下面的代码来实现这一点:Python 2.7 在不使用hasattr的情况下为class属性设置默认值的方法,python-2.7,class,attributes,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 有更好的方法来执行这样的操作吗?类及其实例有自己的名称空间,由\uuu dict\uuuu属性表示,该属性是字典,因此如果hasattr->setattr流,可以使用方法代替,向类实例
class O(object):
pass
o = O()
if not hasattr(o, 'some_attr'):
setattr(o, 'some_attr', None)
print o.some_attr
有更好的方法来执行这样的操作吗?类及其实例有自己的名称空间,由
\uuu dict\uuuu
属性表示,该属性是字典,因此如果hasattr->setattr流,可以使用方法代替,向类实例添加新属性:
class O():
pass
o = O()
o.__dict__.setdefault('some_attr', None)
print o.some_attr
@MartijnPieters建议的方法:
此外,我们还可以使用函数访问\uuu dict\uuu
属性,并调用setdefault
方法,如上面的代码示例所示:
vars(o).setdefault('some_attr', None)
print o.some_attr
我会使用vars(o)
(就像你会使用len(obj)
而不是obj.\uuu len\uuu()
@MartijnPieters谢谢你的建议!这可能是执行此类操作的首选方式)Python3.1:vars([object])
注意:不应修改返回的字典:对相应符号表的影响未定义。()