因为您也可以使用动态变量:
somevar = 'foo'getattr(x, somevar)
您不能使用常规属性访问语法来做到这一点。
请注意,
getattr()如果 缺少 属性,还需要返回一个可选的默认值:
>>> x = object()>>> getattr(x, 'foo')Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'object' object has no attribute 'foo'>>> getattr(x, 'foo', 42)42
使用
getattr()您可以从其他名称(而不是文字)中提取属性名称:
for attrname in dir(x): print('x.{} = {!r}'.format(attrname, getattr(x, attrname))
或者您可以
setattr()用来设置动态属性:
for i, value in enumerate(dynamic_values): setattr(i, 'attribute{}'.format(i), value)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)