On Dec 17, 2:31 am, Paul McGuire <[EMAIL PROTECTED]> wrote: > On Dec 17, 1:18 am, "bambam" <[EMAIL PROTECTED]> wrote: > > > > > > > I wish to create a generic container object, devlist, such that > > > devlist.method(arguments) > > > runs as > > > for each dev in devlist.pool: > > dev.method(arguments) > > > and > > s = devlist.method(arguments) > > > runs as > > > for each dev in devlist.pool: > > s.append(dev.method(arguments)) > > > ...but it is outside my ability to do so. > > > Can anyone provide an example of how to do that? > > > Thanks, > > Steve > > Ok, I'll take a stab at it. > > -- Paul > > class DevList(object): > def __init__(self, objs): > self.devpool = objs > > def __getattribute__(self,attrname): > if attrname == "devpool": > return object.__getattribute__(self,attrname) > def ret(*args): > return [ getattr(p,attrname)(*args) for p in > self.devpool ] > return ret > > dl = DevList([1,2,3]) > print dl.__str__() > > prints: > > ['1', '2', '3']- Hide quoted text - > > - Show quoted text -
Here's some expanded demo code for the previously-posted DevList class: from math import sqrt class NumberWrapper(object): def __init__(self,value=0): self.value = value def inverse(self): if self.value != 0: return 1.0/self.value else: return None def sqrt(self): return sqrt(self.value) def incrBy(self,offset): self.value += offset return self.value dl = DevList([NumberWrapper(i) for i in range(5)]) print dl.sqrt() print dl.inverse() print dl.incrBy(10) print dl.sqrt() print dl.inverse() prints: [0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0] [None, 1.0, 0.5, 0.33333333333333331, 0.25] [10, 11, 12, 13, 14] [3.1622776601683795, 3.3166247903553998, 3.4641016151377544, 3.6055512754639891, 3.7416573867739413] [0.10000000000000001, 0.090909090909090912, 0.083333333333333329, 0.076923076923076927, 0.071428571428571425] -- Paul -- http://mail.python.org/mailman/listinfo/python-list