2017-10-02 10 views
1

types.MethodTypeの引数は何ですか?何が返されますか? https://docs.python.org/3.6/library/types.htmlはそれについての詳細を言うことはありません:types.MethodTypeはどのように使用されますか?

types.MethodType 

ユーザー定義クラスのインスタンスのメソッドのタイプ。例えば

https://docs.python.org/3.6/howto/descriptor.html

からメソッド呼び出しをサポートするために、関数、属性アクセス時 結合法のため__get__()方法が挙げられます。つまり、すべての関数 は、オブジェクトまたはクラスから呼び出されたかどうかによって、バインドされたメソッドまたはバインドされていないメソッドを返す非データ記述子です。純粋 Pythonでは、それは次のように動作します。

class Function(object): 
    . . . 
    def __get__(self, obj, objtype=None): 
     "Simulate func_descr_get() in Objects/funcobject.c" 
     if obj is None: 
      return self 
     return types.MethodType(self, obj) 
  • types.MethodTypeの最初の引数selfは呼び出し可能オブジェクトでなければなりませんか?つまり、クラスFunctionは呼び出し可能な型である必要があります。つまり、Functionにはメソッド__call__が必要ですか?

  • selfが呼び出し可能なオブジェクトの場合、少なくとも1つの引数をとりますか?

  • types.MethodType(self, obj)はすなわちobjselfをカリー化、呼び出し可能オブジェクトselfへの最初の引数としてobjを与えることを意味していますか?

  • types.MethodType(self, obj)は、types.MethodTypeのインスタンスを作成して返しますか?

ありがとう。

答えて

2

これはあなたがこれまで呼ぶものではありません。 typesモジュールのほとんどのクラスと同様に、それは既存のオブジェクト(例えばisinstance)と比較するためのものです。

+0

ありがとうございました。 'types.MethodType(self、obj)'の引数をどのように理解していますか? – Ben

+0

私はあなたの質問を理解していません。 MethodTypeはクラスです。そのコードは関数 '__get__'メソッドから' self'と 'obj'を渡しています。しかし、これも実際のコードではないことに注意してください。コメントによれば、基本的なC実装がメソッドを作成するために何をシミュレートしているかだけです。 –

+0

私は質問をより明確にするために編集しようとしました。 – Ben

関連する問題