如何使用包装器在函数外打印docstring?

时间:2013-08-09 17:48:27

标签: python decorator docstring python-decorators

about python __doc__ docstring完全相关。 如果我不使用functools并使用How to print Docstring of python function from inside the function itself?中提到的包装器,是否有办法打印文档字符串。

def passmein(func):
    def wrapper(*args, **kwargs):
        return func(func, *args, **kwargs)
    return wrapper

@passmein
def testfunc(me):
    """This is a test function"""
    #print me.__doc__

if __name__ == '__main__':
    print testfunc.__doc__

这将返回无。

1 个答案:

答案 0 :(得分:3)

我不确定您为什么不想使用functools.wraps,但您可以自己将文档字符串添加到wrapper

def passmein(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    wrapper.__doc__ = func.__doc__
    return wrapper

@passmein
def testfunc(me):
    """This is a test function"""

if __name__ == '__main__':
    print testfunc.__doc__