[pyar] Fwd: Como reemplazar todas las referencias a n objeto con otro?

Claudio Freire klaussfreire en gmail.com
Mar Jun 8 18:25:01 ART 2010


2010/6/8 Juanjo Conti <jjconti en gmail.com>

>
> Lo que quiero es poder asegurarme que en un momento dado del programa,
> cierto valor no pueda ser usado mås.
>
> Si el valor es "Juanjo" y tengo:
>
> a = "Juanjo"
> b = a
> l = list()
> l.append(a)    # no se donde estan los cochetes en el teclado sueco :)
>
> quisiera poder hacer algo como:
>
> borrar(a)
>
> y luego si hago:
>
> print b
>
> que salga
>
> "borrado"
>
> En el ejemplo el objeto a borrar se reemplazo por el objeto string
> "borrado".


ESE ejemplo tal como lo ponés, en Python, no se puede.
Por diseño.

Como se dijo por arriba.

Lo más que podés hacer es:

a = Maybe("Juanjo")
b = a
l = list()
l.append(a)
a.borrar()

print b
"borrado"

con:

class Maybe:
   def __init__(self, value):
       self.__dict__["__val"] = value
   def borrar(self):
       self.__dict__["__val"] = "borrado"
   def __getattr__(self, name):
       if name in self.__dict__:
            return self.__dict__[name]
       return getattr(self.__dict__["__val"], name)
   def __setattr__(self, name, value):
       if name in self.__dict__:
            self.__dict__[name] = value
            return
       return setattr(self.__dict__["__val"], name, value)
   def __delattr__(self, name):
       if name in self.__dict__:
            del self.__dict__[name]
            return
       return delattr(self.__dict__["__val"], name)



>>> a = Maybe("Juanjo")
>>> b = a
>>> l = list()
>>> l.append(a)
>>> l
['Juanjo']
>>> a
'Juanjo'
>>> a.borrar()
>>> l
['borrado']
>>> b
'borrado'
>>>


Pero es una mentira. Es un proxy.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100608/e7d77eef/attachment.html>


More information about the pyar mailing list