Llamar a una función de un módulo usando su nombre (una cadena)
¿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()
Aceptado
Dado un módulo foo
con método bar
:
import foo
bar = getattr(foo, 'bar')
result = bar()
getattr
se 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.
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"]()