[pyar] Atributo inmortal

Angel Freire cuerty en gmail.com
Mie Jun 20 17:46:29 ART 2012


2012/6/20 Hystrix <ego en hystrix.com.ar>

> 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
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Estas haciendo:

>>> del(urllib)

Y no:

>>> del(urllib.z)


-- 
http://blog.cuerty.com

"If you want to set off and go develop some grand new thing, you don't need
millions of dollars of capitalization. You need enough pizza and Diet Coke
to stick in your refrigerator, a cheap PC to work on and the dedication to
go through with it."
- John Carmack
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120620/e7777aa8/attachment.html>


More information about the pyar mailing list