Mais
Chamando uma função de um módulo usando seu nome (uma string)
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.
1553
3
Assumindo o módulo
foo
com o métodobar
:Podias encurtar as linhas 2 e 3 para:
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.ou
locais retorna um dicionário com uma tabela de símbolos local atual. globals retorna um dicionário com uma tabela de símbolos globais.
A solução do Patrick é provavelmente a mais limpa. Se você precisar pegar o módulo dinamicamente também, você pode importá-lo como: