Python関数には記述子があります。ほとんどの場合、これを直接使用するべきではないと思いますが、この機能がどのように機能するか知りたいですか?私はそのようなオブジェクトでいくつかの操作を試みました:
def a(): return 'x' a.__get__.__doc__ 'descr.__get__(obj[, type]) -> value'
objとは何ですか?タイプは何ですか?
>>> a.__get__() TypeError: expected at least 1 arguments, got 0 >>> a.__get__('s') <bound method ?.a of 's'> >>> a.__get__('s')() TypeError: a() takes no arguments (1 given)
引数を取らない関数では、このトリックを実行できないことは確かです。引数を使って関数を呼び出すだけでいいのでしょうか?
>>> def d(arg1, arg2, arg3): return arg1, arg2, arg3 >>> d.__get__('s')('x', 'a') ('s', 'x', 'a')
なぜ最初の引数が直接取られ
__get__
、他のすべてが返されたオブジェクトによって取られるのですか?