2012/10/5 Jose Caballero <jcaballero....@gmail.com>: > Hola, > > > > pido disculpas por adelantado por lo criptico del "subject". Intentare > explicar mejor lo que quiero hacer. > Quiero crear una clase Container que contiene una lista de objetos de una > clase X arbitraria. > > > ------------------------------------------------------------------------------ > class Container: > def __init__(self, list_obj): > self.list_obj = list_obj > > class X: > blah > > x1 = X() > x2 = X() > x3 = X() > > container = Container( [ x1, x2, x3] ) > ------------------------------------------------------------------------------ > > > Me gustaria poder llamar a un metodo cualquiera en Container, y que > internamente haga un loop de llamadas a ese mismo metodo para todos los > objectos de la lista. > Por ejemplo, si hago > > container.f() > > que internamente se haga un loop de llamadas: > > x1.f() > x2.f() > x3.f() > > > Lo mas cerca que estoy de conseguirlo es con lo siguiente: > > > ------------------------------------------------------------------------------ > class Container: > ... > ... > def __getattr__(self, atr): > outs = [] > for o in self.list_obj: > out = getattr(o, atr)() > outs.append(out) > return outs > ------------------------------------------------------------------------------ > > > con ese codigo puedo hacer > > container.f > container.g > container.h > > pero no > > container.f() > container.g() > container.h() > > > Sigo investigando, pero si mientras tanto alguien me ofrece una pista, sera > mas que bienvenida.
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 > > Saludos cordiales, > Jose > P.S. perdon por la ausencia de tildes. UTF existe, ya no es excusa ;-) Saludos -- A menudo unas pocas horas de "Prueba y error" podrĂ¡n ahorrarte minutos de leer manuales. _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/