关于python:使用字符串变量作为变量名

Using a string variable as a variable name

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do I do variable variables in Python?

我有一个变量分配了一个字符串,我想基于这个字符串定义一个新的变量。

1
2
3
4
5
6
foo ="bar"
foo ="something else"  

# What I actually want is:

bar ="something else"


您可以使用exec进行以下操作:

1
2
3
4
5
>>> foo ="bar"
>>> exec(foo +" = 'something else'")
>>> print bar
something else
>>>


你会更乐意用字典来代替:

1
2
3
4
my_data = {}
foo ="hello"
my_data[foo] ="goodbye"
assert my_data["hello"] =="goodbye"


您可以使用setattr

1
2
3
4
5
6
7
name  = 'varname'
value = 'something'

setattr(self, name, value) #equivalent to: self.varname= 'something'

print (self.varname)
#will print 'something'

但是,由于您应该通知对象接收新变量,我认为这只在类内部有效。