当我具有所需属性名称的字符串时,如何获取对象的属性值?例如,假设cmd_i
具有属性q0
和q1
。我希望能够做到这一点:
for x in range(2):
print('cmd_i.q{}'.format(x))
不必这样做:
print(cmd_i.q0)
print(cmd_i.q1)
答案 0 :(得分:1)
您可以使用getattr
通过字符串获取对象的属性值:
class Test:
q1 = 2
q2 = 3
q3 = 'a'
>>> x = Test()
>>> x.q1
2
>>> getattr(x, 'q2')
3
并带有f字符串:
>>> for i in range(1, 4):
... print(f'q{i}', getattr(x, f'q{i}'))
...
q1 2
q2 3
q3 a
如果属性不存在,您还可以传递默认值以返回(而不是引发AttributeError
):
>>> getattr(x, 'q0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Test' object has no attribute 'q0'
# vs
>>> for i in range(1, 4):
... print(f'q{i}', getattr(x, f'q{i}', None))
...
q0 None
q1 2
q2 3
q3 a
答案 1 :(得分:0)
也可以使用eval
函数,但似乎不被认为是一种好的做法:https://stackoverflow.com/a/2909510/
a = 7
eval('a')