4

我想显示我的函数的文档字符串,但如果我这样使用

@cost_time
def func():
    "define ...."
    blabla
print func.__doc__

它不会显示文档字符串,只是因为我使用了一些棘手的元编程,如何解决这个问题?

4

2 回答 2

12

从装饰器返回的包装函数cost_time必须具有 docstring 而不是func. 因此,使用functools.wrapswhich 正确设置__name__and __doc__

from functools import wraps

def cost_time(fn):
    @wraps(fn)
    def wrapper():
        return fn()

    return wrapper
于 2010-10-05T15:43:20.723 回答
2

使用functools.wraps().

于 2010-10-05T15:39:20.993 回答