invoke method on many instances

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Jul 17 03:45:08 EDT 2009


On Fri, 17 Jul 2009 05:19:50 +0000, Alan G Isaac wrote:

> As a recurrent situation, I need to invoke the same method on many
> instances.  Speed matters, but the solution should be pure Python.  Is
> the following convenience function a reasonable approach?
>
> def apply2(itr, methodname, *args, **kwargs):
>     f = operator.methodcaller(methodname, *args, **kwargs)
>     for item in itr:
>         f(item)

I don't particularly like your naming conventions, but never mind.

You could also try this:

for obj in objects:
    getattr(obj, methodname)(*args, **kwargs)




See also these recipes from the "Python Cookbook":

http://code.activestate.com/recipes/52289/
http://code.activestate.com/recipes/87370/




-- 
Steven



More information about the Python-list mailing list