[pyar] Atributo inmortal
Hystrix
ego en hystrix.com.ar
Mie Jun 20 17:43:47 ART 2012
Buenas, el otro día estaba pisando atributos de un modulo
(monkeypatch) en un test de unittest y me encontré con esto:
Python 2.7.3 (default, Apr 20 2012, 22:44:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> urllib.z = 42
>>> urllib.z
42
>>> del(urllib)
>>> urllib.z
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'urllib' is not defined
>>> import urllib
>>> urllib.z # esperaba un AttributeError pero...
42
>>> reload(urllib)
<module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>
>>> urllib.z # el atributo sigue ahi, como recupero el modulo original?
42
>>>
El problema era que, en un test pisaba un atributo que, en otros
tests, tenia que mantener su valor original. Al final lo resolví
agregando un metodo a la clase que pisara el atributo pero antes se
guardara el valor original y despues, en el teardown, restauraba los
valores.
La pregunta es, por que pasa eso ? y mejor aun, por que me resultó
sorpresivo, que me falta entender para que ese comportamiento me
resulte logico? Ultima, hay alguna forma de que el modulo vuelva a
tener todos sus atributos originales?
--
Hystrix
More information about the pyar
mailing list