pythonobjectreflection

Calling a function of a module by using its name (a string)


How do I call a function, using a string with the function's name? For example:

import foo
func_name = "bar"
call(foo, func_name)  # calls foo.bar()

Solution

  • Given a module foo with method bar:

    import foo
    bar = getattr(foo, 'bar')
    result = bar()
    

    getattr can similarly be used on class instance bound methods, module-level methods, class methods... the list goes on.