Re: Re: Problemas con implementación del singleton

Ark cloudneozero en gmail.com
Vie Jul 4 03:59:14 CEST 2008


Y el código?.
mmm, pues tal vez tengo una idea de lo que puede ser.
Alguna vez trabajando con el patrón singleton tuve un problema que creo que
tiene que ver con este.
No estoy seguro si este se el caso, pero hay que mirar la diferencia entre
estas dos lineas, en una el módulo es __main__ y en la otra es myset.
<__main__.Singleton instance at 0x2b98be474a70>
<myset.Singleton instance at 0x2b98be474d88>

A mi me pasó lo siguiente.  Yo tenía la clase singleton en el archivo
principal (el __main__) que era un archivo principal.py.  Si dentro de este
instancio el singleton, obtendré una clase cuyo módulo es __main__.  Si en
este mismo archivo importo otro archivo (otro.py) que a su vez importa el
archivo principal (principal.py) donde esta el singleton, e instancio el
singleton nuevamente se instanciará principal.singleton y no
__main__.singleton.  Al parecer python se comportaba de una forma que yo
desconocía.  Si uno importa un módulo desde varios archivos, se obtiene la
misma referencia desde todos, pero eso no es lo que pasa con el script
principal.  El que se ejecuta se llama __main__ y si se importa desde otro,
no será el mismo __main__, sino que será uno con el nombre del archivo.

Sin el código, pues no puedo saber si es el mismo problema, pero a juzgar
por la salida pareciera que si.  Para solucionar eso, lo que hice fue sacar
la clase singleton del script principal y desde este lo importo, y desde el
otro módulo también, de esa forma obtengo una referencia a la misma clase en
el mismo módulo siempre.

Ark
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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