Verwendung einer String-Variable als Variablenname

Mögliches Duplikat: Wie mache ich Variablen in Python?

Ich habe eine Variable, der eine Zeichenkette zugewiesen ist, und ich möchte eine neue Variable definieren, die auf dieser Zeichenkette basiert.

foo = "bar"
foo = "something else"   

# What I actually want is:

bar = "something else"

Sie können dafür exec verwenden:

>>> foo = "bar"
>>> exec(foo + " = 'something else'")
>>> print bar
something else
>>> 
Kommentare (4)

Sie werden viel glücklicher sein, wenn Sie stattdessen ein Wörterbuch benutzen:

my_data = {}
foo = "hello"
my_data[foo] = "goodbye"
assert my_data["hello"] == "goodbye"
Kommentare (4)

Sie können "setattr" verwenden

name  = 'varname'
value = 'something'

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

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

Aber, da man ein Objekt informieren sollte, um die neue Variable zu erhalten, denke ich, dass dies nur innerhalb von Klassen funktioniert.

Kommentare (1)