crear instancias de todas las clases de un directorio

camontuyu camontuyu en yahoo.es
Lun Ene 23 08:31:57 CET 2006


Alberto Ruiz escribió:
> El día 22/01/06, camontuyu <camontuyu en yahoo.es> escribió:
>   
>> Hola,
>> tengo el siguiente problema. Tengo la siguiente estructura de
>> directorios en un programa en python
>>
>> base \
>>     - eventos
>>     - tareas \
>>           - tareasBase \
>>                 - claseA.py
>>                 - claseB.py
>>                 - claseC.py
>>                 - ...
>>     main.py
>>
>> En subdirectorio tareasBase, del directorio tareas, tengo diferentes
>> modulos donde cada uno tiene una clase. Me gustaría crear desde main.py
>> una instancia de cada clase del directorio tareasBase dinamicamente.
>> Esto es, que puede haber un numero indeterminado de modulos que habrá
>> que cargar todos.
>>
>> Hay alguna forma de hacerlo??
>>     
>
>
> Tienes dos formas, añadiendo el directorio tareasBase a la variable
> PYTHONPATH,
> o añadiendo ficheros __init__.py en tareas y en tareasBase
> el fichero __init__.py de tareas, estará vacío, y el de tareasBase debe
> tener lo siguiente:
> import claseA
> import claseB
> import claseC
> ...
>   
Ok, la segunda opción me parece lo más correcto. Desde el __init__.py de 
tareasBase se importan todos sus módulos.
> si tuvieras una clase dentro de claseA.py definida asi:
> class claseAbase:
>   def __init__(self):
>     self.yo="Alberto"
>
> ya podrias hacer lo siguiente desde main:
>
>
> from tareas.tareasBase.claseA import claseAbase
> i = claseAbase()
>   
El problema es que no se el nombre de las instancias de la clases en los 
diferentes módulos. Por lo que en el main no puedo hacer referencia 
exactamente al nombre de la clases. (No se si me explico).

En el ejemplo anterior supongomos que el modulo claseA.py tiene definida 
la clase ClaseA y el modulo claseB.py tiene definida la clase ClaseB.

Desde main me gustaría crear una instacia de cada clase que exista en 
cada módulo del directorio hablado.

Por lo que pensando de forma similar al hacer el import en el 
__init__.py de todos lo módulos, se podría crear una instancia de cada 
clase o algo así. NO se caul es la forma más sencilla sin tener que 
declarar variables globales ????

Muchas gracias.




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