[Python-es] Import variables.
José Miguel Sánchez Alés
aussiliar en online.fr
Sab Ene 19 14:26:58 CET 2008
Tengo el siguiente problema que no sé como resolver:
#v+
#!/usr/bin/python
#
# prueba.py
#
prec=2
class Tonteria(object):
def muestraPrec(self,dec=None):
if dec is None:
dec=prec
return dec
#v-
Es decir, un módulo inútil que lo único que hace es devolver una variable
definida como global en prueba.py.
Ahora me meto en python y pruebo hacer el 'import':
#v+
Python 2.4.4 (#2, Aug 16 2007, 02:03:40)
[GCC 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import prueba
>>> prueba.prec
2
>>> a=prueba.Tonteria()
>>> a.muestraPrec()
2
>>> prueba.prec=10
>>> a.muestraPrec()
10
>>>
#v-
Vale es lo que quiero. Sin embargo, si hago el import así:
#v+
Python 2.4.4 (#2, Aug 16 2007, 02:03:40)
[GCC 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from prueba import *
>>> prec
2
>>> a=Tonteria()
>>> a.muestraPrec()
2
>>> prec=10
>>> a.muestraPrec()
2
>>>
#v+
Puedo acceder a prec, cambiar su valor, pero el método de Tonteria que
accedía a él no se entera del cambio. ¿A qué se debe? ¿Se le ocurre a
alguien como solucionarlo (que no sea la solución trivial de meter prec
en la clase Tonteria y acceder como Tonteria.prec)?
--
En la vida humana sólo unos pocos sueños se cumplen,
la mayoría se roncan.
--- Enrique Jardiel Poncela ---
Si Dióxido de Silicio | Debian GNU/Linux
/ \ (SiO2) | José Miguel Sánchez Alés
O O Mineral de Cuarzo | aussiliar en online.fr | URL #257033
Más información sobre la lista de distribución Python-es