[Python-es] encapsular llamadas a metodos arbitrarios desde una clase container

Jose Caballero jcaballero.hep en gmail.com
Vie Oct 5 22:57:38 CEST 2012





On Oct 5, 2012, at 15:49, Jose Caballero <jcaballero.hep en gmail.com> wrote:

> 
> 
> Tal vez algo como:
> 
>     class Cont:
>         ...
>         def __getattr__(self, atr):
>             def foo():
>                 outs = []
>                 for o in self.list_obj:
>                     out = getattr(o, atr)()
>                     outs.append(out)
>                 return outs
>            return foo
> 
> 
> 
> Funciona a la perfeccion. De esa forma se devuelve una funcion, y no el resultado de la misma, y asi puedo hacer luego cont.f() 
> Muchas gracias !
> 
> 


Hmmm.
Ahora tengo que investigar qué hacer si quiero que alguno de los métodos acepte inputs.
Por ej: 

container.f(1, 2, 3)

Tengo que averiguar cómo pasar 1 2 3 a través de foo(). 
Imagino que haciendo algo tipo 

   def foo(*k, **kw):
       ...
       out = getatr(o, atr)(k, kw)
       ...



Jose
ahora en una máquina con tildes ;)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121005/5d5099ff/attachment.html>


Más información sobre la lista de distribución Python-es