【问题标题】:How to print docstring outside a function using wrappers?如何使用包装器在函数外部打印文档字符串?
【发布时间】:2013-08-11 17:43:04
【问题描述】:

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__

这不会返回任何内容。

【问题讨论】:

  • 你为什么要打印me.__doc__而不是testfunc.__doc__
  • 同时,如果您要问的只是如何在不使用functools.wraps 的情况下以保留文档字符串的方式包装函数……只需查看the source 并做同样的事情。但我无法想象你为什么想要那个。
  • @abamert- 当我调用它时,打印是用它来显示函数内部的文档字符串。
  • 那么你为什么要打印它的第一个参数的文档字符串?

标签: python decorator docstring python-decorators


【解决方案1】:

我不确定您为什么不想使用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__

【讨论】:

  • 啊!谢谢。这有助于我更好地理解包装器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多