[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