ホームページ > バックエンド開発 > Python チュートリアル > 関数名が動的である場合、Python でモジュール関数を呼び出すにはどうすればよいですか?

関数名が動的である場合、Python でモジュール関数を呼び出すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-22 13:26:14
オリジナル
350 人が閲覧しました

How Can I Call a Module Function in Python When the Function Name is Dynamic?

動的関数命名によるモジュール関数の呼び出し

モジュールの関数を呼び出す必要があるが、その関数が名前は動的に生成され、文字列として保存されます。これにより、次のような疑問が生じます: これをプログラムでどのように実現できるでしょうか?

モジュールと関数名を文字列として使用した動的関数呼び出し

この課題の解決策は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート