Python でのバインドされたクラス メソッドとアンバインドされたクラス メソッドの使用法の詳細な分析

高洛峰
リリース: 2017-03-06 13:45:28
オリジナル
1108 人が閲覧しました

この記事の例では、Python のバインドされたクラス メソッドとアンバインドされたクラス メソッドについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

関数と同様、Python のクラス メソッドもオブジェクトです。メソッドにはインスタンスとクラスの両方を介してアクセスできるため、Python には 2 つのスタイルがあります:

Unbound クラス メソッド: self なし

クラスを介してメソッドを参照すると、Unbound メソッド オブジェクトが返されます。これを呼び出すには、最初の引数としてインスタンスを明示的に指定する必要があります。

バインドされたインスタンスメソッド: インスタンスアクセスメソッドを通じてバインドされたメソッドオブジェクトを返す self

があります。 Python はインスタンスをメソッドに自動的にバインドするため、呼び出し時にインスタンス パラメーターを渡す必要はありません。

どちらのメソッドもオブジェクトであり、渡したり、リストに保存したり、待機したりできます。どちらのランタイムも最初の引数 (self 値) としてインスタンスを必要としますが、インスタンスを通じてバインドされたメソッドを呼び出すときに、Python が自動的にインスタンスを提供します。たとえば、次のコードを実行します。

class Test:
  def func(self,message):
    print message
object1=Test()
x=object1.func
x('绑定方法对象,实例是隐含的')
t=Test.func
t(object1,'未绑定的方法对象,需要传递一个实例') 
#t('未绑定的方法对象,需要传递一个实例') #错误的调用
ログイン後にコピー

object1=Test() はインスタンスを生成し、object1.func はバインディング メソッドを返し、インスタンス object1 をメソッド func にバインドします。

そして、Test.func はクラスを使用してメソッドを参照し、バインドされていないメソッド オブジェクトを取得します。これを呼び出すには、t(object1,'Unbound メソッド オブジェクト、インスタンスを渡す必要があります') などのインスタンス パラメーターを渡す必要があります。

ほとんどの場合、メソッドを直接呼び出すため、通常はメソッド オブジェクトに気づきません。ただし、ジェネリック オブジェクトを呼び出すコードの作成を開始する場合は、インスタンス パラメーターを渡す必要がある非バインド メソッドに特別な注意を払う必要があります。

Python のバインドおよびアンバインド クラス メソッドの使用分析に関する詳細な説明については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!