ホームページ  >  記事  >  バックエンド開発  >  Python のバインドされたメソッド、アンバインドされたメソッド、関数: 違いは何ですか?

Python のバインドされたメソッド、アンバインドされたメソッド、関数: 違いは何ですか?

DDD
DDDオリジナル
2024-10-27 16:29:01176ブラウズ

Bound Methods, Unbound Methods, and Functions in Python: What's the Difference?

バインドされたメソッド、アンバインドされたメソッド、関数: Python の特徴的なトリオ

Python オブジェクト操作の領域で、これらの違いを理解する関数、バインドされたメソッド、およびアンバインドされたメソッドが重要です。それらのニュアンスを解き明かす旅に出かけましょう。

関数とは何ですか?

関数は本質的に、特定のタスクを実行する自己完結型のコード ブロックです。 def または lambda ステートメントを使用して作成されます。関数がクラス内で定義されると、Python はそれを非バインド メソッドに変換します。

非バインド メソッドとは何ですか?

非バインド メソッドは、クラスにアタッチされた関数です。クラスですが、そのクラスの特定のインスタンスにまだバインドされていません。 Python 2 では、関数がクラス ステートメントに挿入されるときに非バインド メソッドが作成されます。 Python 3 では、非バインド メソッドの概念が削除されました。

バインド メソッドとは何ですか?

バインド メソッドは、インスタンスにバインドされた関数です。クラスの。クラス インスタンスでバインドされたメソッドにアクセスすると、そのインスタンスが最初のパラメーターとしてメソッドに自動的に提供されます。

Interconversion

  • 関数非バインド メソッドへ:types.MethodType クラス コンストラクターを使用します:types.MethodType(function, None, class)
  • 非バインド メソッドからバインド メソッドへ: クラスの非バインド メソッドにアクセスしますインスタンスまたは get メソッドを使用します: unbound_method.__get__(instance, class)
  • Bound Method to Function: im_func 属性を使用して元の関数を取得します:bound_method.im_func

実際的な意味

関数と非バインド メソッドの主な違いは、後者は自分が属するクラスを認識しているのに対し、関数はそれを認識していないことです。これは、適切なインスタンスなしでこれらのメソッドを呼び出そうとすると明らかになります。

さらに、関数をインスタンスにバインドすると、最初の引数 (self) がインスタンスに固定され、バインドされたメソッドが同等のラムダ関数または部分関数。

結論

関数、非バインド メソッド、バインド メソッドの区別を理解することは、Python で効果的にオブジェクトを操作するために不可欠です。これらの形式はそれぞれ独自の目的を果たし、相互変換によりメソッドをインスタンスに動的にバインドできます。

以上がPython のバインドされたメソッド、アンバインドされたメソッド、関数: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。