返回顶部

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

1

0/300

评论 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

- 没有更多了 -