[pyar] Objetos proxy

Juanjo Conti jjconti en gmail.com
Jue Jun 10 09:53:31 ART 2010


Retomo algo de otro hilo. Esta implementación de Proxy fue sugerida:

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)

Encontré que funcionaba para todo lo que quería, pero cuando operaba por
ejemplo:

a = Maybe('8')
a+a

obtenía un error, no se puede sumar str con instance.

Pensé en hacer que Maybe extienda str, pero me encontré con el problema de
que __getattr__ ya no era llamado y print a muentra el valor original en
lugar de 'borrado'. Podría user __getattribute__ para si o si interceptar la
llamada? cómo? en mis intentos siempre obtengo una excepción de recursión!

Saludos y gracias,

-- 
Juanjo Conti
blog: http://www.juanjoconti.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100610/4bdec529/attachment.html>


More information about the pyar mailing list