Compartir variable entre distintos modulos

Gabriel Genellina gagsl-py en yahoo.com.ar
Sab Feb 10 01:17:21 CET 2007


En Fri, 09 Feb 2007 14:04:29 -0300, Juan José Alonso.  
<kernel.no.found en gmail.com> escribió:

> Les comento, tengo un modulo (libreria) que contiene variables de
> configuracion como es el caso DEBUG_CONSOLE alli se inicia con un valor
> True, luego en la aplicacion que use esta libreria quiero que pueda  
> acceder
> al modulo donde se encuentra la variable y cambiar su estado, Ejemplo:
> milibreria.config.DEBUG_CONSOLE = False
>
> Y asi cuando en OTRO modulo de la libreria que corre dentro de un bucle
> detecte un evento, un logger funcione asi:
>
> if milibreria.config.DEBUG_CONSOLE: print "DEBUGGING..: bla bla "
>
> El tema es que no se si el fallo esta en otro lado, o si cada import de  
> cada
> modulo es una instancia diferente.

Cual fallo?
Bueno, adivinemos un poco... Supongo que, a pesar de que en la aplicacion  
se cambia el valor de DEBUG_CONSOLE, cuando lo vas a consultar dentro del  
modulo, sigue teniendo el valor anterior.

Como dijiste, una vez importado un modulo, las referencias siguientes  
devuelven el mismo objeto (hay excepciones).
Pero ojo, esto se aplica al *modulo*, no a las variables definidas en el.
Si uno pone: from milibreria.config import DEBUG_CONSOLE, o tambien: from  
config import DEBUG_CONSOLE, aca estas extrayendo solo el valor actual de  
esa variable; no se va a ver afectada por cambios posteriores en  
config.DEBUG_CONSOLE.
Para ver los cambios, siempre hay que acceder a la variable a traves del  
modulo; o sea, habria que usar config.DEBUG_CONSOLE en todas partes.

No es nada especial de los modulos, cualquier objeto mutable se comporta  
igual:

py> a = ["Hola",123]
py> b = a
py> v = a[0]
py> v
'Hola'
py> a[0] = "Chau"
py> b
['Chau', 123]
py> v
'Hola'
py> v = "dibidi dabada chum"
py> a[0]
'Chau'

(a y b serian dos referencias a un mismo modulo, v seria una variable  
declarada en ese modulo)

-- 
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