【发布时间】:2013-02-10 16:29:17
【问题描述】:
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__直接采用第一个参数,而返回对象则采用其他所有参数?
【问题讨论】:
标签: python function metaprogramming descriptor