Seleccionar la clase a instanciar en tiempo de ejecucion

Andres Moya Andres.Moya en hispalinux.es
Lun Feb 14 09:16:17 CET 2005


Ernesto Revilla wrote:

> sin recurir al eval, puedes usar getattr para sacarlo de donde esté 
> definida esta clase, es decir, si tienes un módulo 'clases' que define 
> todas esas clases, puedes hacer algo como esto:
>
> import clases
>
> nombreclase=raw_input('Nombre de la clase')
> clase=getattr(clases,nombreclase)
> instancia=clase()
>
> de todos modos, tienes que saber dónde reside la clase y hacerla 
> disponible (importar módulo que lo contenga).


Si el nombre del módulo también es variable, puedes usar la función 
__import__:

nombremodulo = raw_input('Nombre del módulo')
nombreclase = raw_input('Nombre de la clase')

modulo = __import__(nombremodulo)
clase = getattr(modulo, nombreclase)
instancia = clase()

-- 
Andres.Moya en hispalinux.es




Más información sobre la lista de distribución Python-es