-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El 05/09/10 14:59, Narcis Garcia - GiLUG escribió:
> Hola, uso una variable global para almacenar la configuración de mi
> programa, la cual relleno mediante una función así:

Yo intentaría evitar usar variables globales en todo momento. El código
queda poco claro y difícil de mantener. Es mejor colocar toda
configuración en un módulo aparte e importarlo allí donde te haga falta.
Así sabrás de dónde vienen las variables y, sobre todo, asociar a cada
cosa su propio espacio de nombres para que no se pisen entre sí.

Respondiendo a tu pregunta concreta, la declaración explícita de una
variable como global sólo tiene un cometido: su modificación. Si sólo
vas a leer su valor, entonces es global implícitamente.


> def CargarConfiguracion(Configuracion):
>     Configuracion["FicheroConf"] = "/etc/miprograma.conf"
>     ...

Aquí "Configuración" (la variable global?) la estás pasando como
argumento, o sea, es "local" dentro de la función.


> Que luego necesito usar dentro de una clase así:
> 
> class InterfazPrincipal(wx.Frame):
>     global Configuracion
>     ...

Como te decía, si la clase no modifica la variable global, entonces esta
declaración de "global" es puramente decorativa (no está mal, pero sin
ella funciona todo igual).


> Y en el núcleo del programa procedo así:
> 
> LaAplicacion = wx.App(False)
> CargarConfiguracion(Configuracion)
> InterfazPrincipal(None, "titulo")
> LaAplicacion.MainLoop()
> 
> El problema es que dentro de la clase no parece que se entere de los
> valores de la variable global, porque al intentarla usar me dice:
> KeyError: 'FicheroConf'

Si es verdad que éste es el núcleo, entonces no entiendo el porqué del
error. Habría que ver más código y ver dónde se crea la variable global.

De todos modos, si usas algún debugger de python te será fácil ir
siguiendo las modificaciones de las variables globales y comprobar qué
está pasando.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJMhCKIAAoJEFdWyBWwhL4FQ4YH/RVT/IHSSK459DuLEdAhEaZJ
ij8sJ/G8HSEoTn4YMkjav5avLc9rpUcR+UhgCRC5bPHKRJc8JXQD4zBcF4TmOq3+
K+frSX2GfoFvDKnIE8Bl3ENIKFBjOqEecRMgS2pIo2WjWNacvhRL9ZlW3wVW2BV1
gZaX2yU9AThaLv0oqNnefL+phEIHRCgxfvFTH9ixkkZerCYVDWBDJNiP7NhxHzcU
1Ex39I0zL5qDwg2bwlZ0zCq15difAzC11v54QNDkkwc+GhywNcgHN+4gjCwICVhq
RY+rCD/Jkw+KAIsn+VjKJncOM10ZAS6SlT1laCbo61g7z+KB6CVPRsWx4MFcAIo=
=kXEs
-----END PGP SIGNATURE-----
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a