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