On 7/27/05, Tito <[EMAIL PROTECTED]> wrote: > Thank you both for your quick answers. > > What I wanted is to parameterize a function with another member > function, like this: > > def printFunctionForEach(collection, functionName): > for elem in collection: > print eval("elem." + functionName + "()") > > Moreover, I wanted to do it with a property: > > def printPropertyForEach(collection, propertyName): > for elem in collection: > print eval("elem." + propertyName) > > Is there another approach to do it? >
Sure, piece of cake: >>> class test: ... def func1(self): print 'func1 called' ... >>> class test2: ... def func1(self): print 'other func1' ... >>> x = [test(), test2(), test()] >>> def call_this_func(lst, func_name): ... for e in lst: ... getattr(e, func_name)() ... >>> call_this_func(x, 'func1') func1 called other func1 func1 called >>> Note that the getattr raises an AttributeError if func_name doesn't exist in the object; you should probably wrap it in a try/except. Peace Bill Mill bill.mill at gmail.com -- http://mail.python.org/mailman/listinfo/python-list