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