1. ホーム
  2. python

[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。

2022-03-15 14:01:49

質問

Pythonのプログラムで、関数名の文字列を指定して関数を呼び出すには、どのような方法が良いでしょうか。例えば、私はモジュールを持っているとしましょう foo という文字列があり、その中身は "bar" . を呼び出す最良の方法は何でしょうか? foo.bar() ?

関数の戻り値を取得する必要があるため、単に eval . を使うことでどうすればいいか考えました。 eval を使用して、その関数呼び出しの結果を返す temp 関数を定義していますが、これを行うよりエレガントな方法があることを期待しています。

どのように解決するのですか?

想定されるモジュール foo というメソッドで bar :

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

2行目と3行目を短縮して

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

を使用すると、より理にかなっています。

を使用することができます。 getattr この方法で、クラスインスタンス結合メソッド、モジュールレベルメソッド、クラスメソッドなど、数え上げればきりがありません。