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__
,而其他所有参数都由返回的对象?