
通过阅读文档,我完全了解getattr()和setattr() 的作用。但它也明确表示getattr(x, 'foobar')等价于x.foobar和setattr(x, 'foobar', 123)等价于x.foobar = 123。 那么我为什么要使用它们呢?

0

1
评论 1
fish

因为您也可以使用动态变量:
somevar = 'foo'
getattr(x, somevar)
您不能使用常规属性访问语法来做到这一点。
请注意,getattr()它还采用可选的默认值,如果缺少属性,则返回:
>>> x = object()
>>> getattr(x, 'foo')
Traceback (most recent call last):
File "", line 1, in
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)
2022-01-10 14:36:02

0
- 没有更多了 -
Python互动课话题
0/300
请先 登录 后发表评论~