Llamar a una función de un módulo usando su nombre (una cadena)

Resuelto ricree asked hace 16 años • 18 respuestas

¿Cómo llamo a una función usando una cadena con el nombre de la función? Por ejemplo:

import foo
func_name = "bar"
call(foo, func_name)  # calls foo.bar()
ricree avatar Aug 06 '08 10:08 ricree
Aceptado

Dado un módulo foocon método bar:

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

getattrse puede usar de manera similar en métodos vinculados a instancias de clase, métodos a nivel de módulo, métodos de clase... la lista continúa.

Patrick Johnmeyer avatar Aug 06 '2008 03:08 Patrick Johnmeyer
  • Usando locals(), que devuelve un diccionario con la tabla de símbolos local actual:

    locals()["myfunction"]()
    
  • Usando globals(), que devuelve un diccionario con la tabla de símbolos global:

    globals()["myfunction"]()
    
sastanin avatar May 07 '2009 12:05 sastanin