Python: Uso de variables por su nombre

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
Marcar el enlace permanente.

Deja una respuesta