我在这里使用Python 2.6。 也许我的头衔是误导性的。所以我会在这里解释一下。我尽力寻找解决方案,但由于我相当新,我不知道要搜索什么。
基本上,我从用户那里得到一个输入字符串值,我希望这样做:
让我们说
x=['reg1','reg2','reg3']
我想写:
for reg in x:
display_value.reg
这样python会在每次迭代时读取以下内容:
display_value.regX
和NOT:
display_value.'regX'
答案 0 :(得分:2)
你想要的是getattr
:
x=['reg1','reg2','reg3']
for attr in x:
getattr(display_value, attr) # same as display_value.attr, attr not a string.
如果您的对象没有attr,您可能会发现提供默认值很有用:
foo = getattr(obj, attr, 'default value') # typically better to use None.
答案 1 :(得分:1)
虽然@Aaron Hall的解决方案有效,但我会说“你真正想要的是使用dict
,而不是对象实例”。
虽然可以反省Python中的几乎所有东西,因此你可以在Python中使用一个对象作为dict
,但是完整的对象带来了一些额外的包袱和复杂性,使得它们不适合简单映射的情况(例如key1 => value1, key2 => value2
)。
dict
是适当的容器类型:
keys = ['reg1','reg2','reg3']
display_value = dict( map(None, keys, ()) )
for key in keys:
# do something with the value of display_value[key]