動的関数命名によるモジュール関数の呼び出し
モジュールの関数を呼び出す必要があるが、その関数が名前は動的に生成され、文字列として保存されます。これにより、次のような疑問が生じます: これをプログラムでどのように実現できるでしょうか?
モジュールと関数名を文字列として使用した動的関数呼び出し
この課題の解決策は、Python の getattr 関数にあります。 。 getattr は、オブジェクトと属性 (またはメソッド) 名を表す文字列を受け取り、属性の値を返します。この概念をモジュールに適用すると、モジュール参照と関数名を文字列として渡すことでモジュールの関数を呼び出すことができます。
次の例を考えてみましょう。
import foo func_name = "bar" bar = getattr(foo, func_name) result = bar()
この例では、モジュール fooファンクションバーが含まれています。 getattr を使用して、foo モジュールと文字列「bar」を渡すことで bar 関数を取得します。最後に、bar を呼び出し、その戻り値を result に格納します。
関数を超えて: クラス メソッドの動的呼び出し
getattr の多用途性は、モジュール レベルの関数の呼び出しを超えて拡張されます。 。また、クラス インスタンスにバインドされたメソッド、モジュール レベルのメソッド、クラス メソッドなどにアクセスするために使用することもできます。
クラス メソッド呼び出しの例:
class MyClass: @classmethod def classmethod_foo(cls, arg): pass my_class_instance = MyClass() classmethod_foo = getattr(my_class_instance, "classmethod_foo") classmethod_foo(arg)
この例は、クラスメソッド classmethod_foo のインスタンス上での動的呼び出しを示しています。 MyClass.
注:
Python バージョン 3.10 以降では、新しい getattr エイリアス getattrs が導入されており、属性に動的にアクセスするための柔軟性と利便性が向上しています。
以上が関数名が動的である場合、Python でモジュール関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。