将字符串更改为变量

时间:2014-06-19 17:38:58

标签: python

我在这里使用Python 2.6。 也许我的头衔是误导性的。所以我会在这里解释一下。我尽力寻找解决方案,但由于我相当新,我不知道要搜索什么

基本上,我从用户那里得到一个输入字符串值,我希望这样做:

让我们说

x=['reg1','reg2','reg3']

我想写:

for reg in x:
    display_value.reg

这样python会在每次迭代时读取以下内容:

display_value.regX

和NOT:

display_value.'regX'

2 个答案:

答案 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]