Cuando tenemos que trabajar con un montón de variables a veces es útil poder llamarlas por su nombre. Si tenemos un objecto usaremos las funciones internas de python
Su uso es evidente:
class prueba():
lista_alumnos=[]
def __init__(self):
for num in range (1,20):
setattr(self,"alumno%s"%num,"Somos el alumno %s"%num)
self.lista_alumnos.append("alumno%s"%num)
def listar(self):
print "listando las variables"
for variable in self.lista_alumnos:
print "LA variable %s tiene el valor: %s"%(variable,getattr(self,variable))
if __name__ == '__main__':
p = prueba()
p.listar()
Otra opción es usar la función dir(), aunque deberÃamos filtrar su respuesta:
class prueba():
una = 1
dos = 2
tres = 3
def listar(self):
print "listando las variables"
for variable in dir(self):
print "La variable %s tiene el valor: %s"%(variable,getattr(self,variable))
if __name__ == '__main__':
p = prueba()
p.listar()
Y para el ejemplo que comentaba:
Si no tenemos un objecto y es una variable local podemos usar la funcion locals()
mivariable = 'Esta es mi variable'
print locals()['mivariable']
## Creamos una nueva variable usando su nombre
locals()['nuevavariable'] = 'Esta es mi nueva variable local'
print nuevavariable