Usando una variable de cadena como nombre de variable

Posible duplicado:
¿Cómo hago variables variables en Python?

Tengo una variable con una cadena asignada a ella y quiero definir una nueva variable basada en esa cadena.

foo = "bar" foo = "something else" # What I actually want is: bar = "something else" 

Puedes usar exec para eso:

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

Estarás mucho más feliz usando un diccionario en su lugar:

 my_data = {} foo = "hello" my_data[foo] = "goodbye" assert my_data["hello"] == "goodbye" 

Puedes usar setattr

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

Pero, como debe informar a un objeto para recibir la nueva variable, creo que esto solo funciona dentro de las clases.