pregunta sobre variables globales

Gabriel Genellina gagsl-py2 en yahoo.com.ar
Lun Sep 24 20:48:27 CEST 2007


En Thu, 20 Sep 2007 13:28:53 -0300, Javi <javi en bertayjavi.com> escribi�:

> hola , os voy a exponer cual es mi duda, me gustaria tener una variable  
> a la que pueda acceder desde los diferentes modulos de mi programa y la  
> verdad es que no se como hacerlo, lo intento con global pero no me  
> funciona. Uso windows y python 2.5, wx y boa.

Vayamos por partes. Por un lado la cuestion de las globales que veo que no  
lo tienes claro (leer el tutorial de Python creo que te vendria bien). En  
Python las variables "globales" son generalmente "globales al modulo". Asi  
que lo que hay que hacer es importar el modulo que las define. (No le  
tengas miedo al import, que una vez que el modulo fue importado por  
primera vez, simplemente devuelve una referencia al mismo modulo ya  
cargado). Por ejemplo:

--- modulo1.py ---
mi_variable = 100

def lagarunfa():
   print "en modulo1, mi_variable=", mi_variable
--- fin modulo1.py ---

--- modulo2.py ---
import modulo1

def furufaifa():
   print "en modulo2, mi_variable=", modulo1.mi_variable
--- fin modulo2.py ---

--- main.py ---
import modulo1, modulo2
print "en main, mi_variable=", modulo1.mi_variable
modulo1.lagarunfa()
modulo2.furufaifa()
print "cambiando a 200"
modulo1.mi_variable = 200
print "en main, mi_variable=", modulo1.mi_variable
modulo1.lagarunfa()
modulo2.furufaifa()
--- fin main.py ---

Y fijate que no use "global" en ninguna parte - es para otra cosa.

> La cuestion es que tengo una mdiparentframe como pantalla principal  
> donde se le asigna valores a esa variable y despues quiero poder acceder  
> a ella desde las diferentes pantallas  mdichildframe, pero no se me  
> ocurre. Si alguine pudiera ayudarme le estari amuy agradecido..

Pero en este caso deberias olvidarte de todo lo que dije arriba :)
No hay que usar variables globales. Simplemente que sea un atributo de la  
MDIParentFrame (no del modulo, sino del objeto frame). Todas las  
MDIChildFrame pueden acceder a ella usando self.GetParent()

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