Python函数有一个描述符.我相信在大多数情况下我不应该直接使用它,但我想知道这个功能是如何工作的?我用这样的对象尝试了几个操作:
def a():
return 'x'
a.__get__.__doc__
'descr.__get__(obj[, type]) -> value'
Run Code Online (Sandbox Code Playgroud)
什么是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)
Run Code Online (Sandbox Code Playgroud)
当然,我不能用不带参数的函数来做这个技巧.是否只需要调用带参数的函数?
>>> def d(arg1, arg2, arg3):
return arg1, arg2, arg3
>>> d.__get__('s')('x', 'a')
('s', 'x', 'a')
Run Code Online (Sandbox Code Playgroud)
为什么第一个参数直接由__get__,返回对象的所有其他参数?