Como hacer importacion ciclica

Gabriel Genellina gagsl-py2 en yahoo.com.ar
Vie Mar 2 04:26:21 CET 2007


En Wed, 28 Feb 2007 13:27:12 -0300, Juan José Alonso.  
<kernel.no.found en gmail.com> escribió:

> Saludos, ya me ha ocurrido en varios momentos.. les comento
>
> Tengo un fichero donde tengo una clase Mapa(), y otro fichero donde tengo
> Interfaz()
>
> El tema es que en el fichero de Mapa() necesito importar la clase  
> Interfaz
> y en interfaz necesito importar Mapa() o cualquier otro del mismo fichero
>
> Y la primera importacion va bien, pero al hacer la 2º no me deja, he oido
> algo de que es por ser una importacion ciclica

En principio significa que el algo no esta del todo bien en el diseño.
Pero, si solo usas una clase definida en uno en el otro y viceversa,  
deberia funcionar. Es decir, si en mapa.py dice `import interfaz`, y en  
interfaz.py dice `import mapa`, y en ambos no hay "cosas raras", deberia  
funcionar. Por "cosas raras" me refiero a, por ejemplo, objetos globales  
que se construyen en ambos modulos y necesitan una referencia al otro al  
momento de construirse, eso sí te traeria problemas.

De cualquier modo hay dos cosas que se pueden hacer para evitarlo:
- re-pensar mejor las dependencias y poner todo en a) un solo modulo, o en  
b) dos pero organizados diferentemente, o c) en tres (de manera que los  
otros dos importan este tercero).
- sacar el import global y ponerlo *dentro* de los metodos/funciones que  
realmente lo necesitan.

-- 
Gabriel Genellina

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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