Qual é a melhor maneira de chamar uma função dada uma string com o nome da função's nome em um programa Python. Por exemplo, deixe's dizer que eu tenho um módulo foo
, e eu tenho uma string cujo conteúdo é "bar"
. Qual é a melhor maneira de chamar foo.bar()
?
Eu preciso obter o valor de retorno da função, e é por isso que eu não'não uso apenas eval
. Eu descobri como fazer isso usando eval
para definir uma função temporária que retorna o resultado dessa chamada de função, mas eu'espero que haja uma maneira mais elegante de fazer isso.
Assumindo o módulo foo
com o método bar
:
import foo
method_to_call = getattr(foo, 'bar')
result = method_to_call()
Podias encurtar as linhas 2 e 3 para:
result = getattr(foo, 'bar')()
se isso fizer mais sentido para o seu caso de uso.
Você pode utilizar getattr
desta forma em métodos vinculados a instâncias de classe, métodos em nível de módulo, métodos de classe... a lista continua.