【发布时间】:2023-03-17 20:40:01
【问题描述】:
我正在尝试记录一个装饰器,但不确定文档字符串应该放在哪里。从技术上讲,它是包含我要记录的参数的内部包装器,但用户将应用外部函数名称作为装饰器。
例如,
def change_case(func):
"""Does the doc string go here
"""
def _wrapper(s, case=None):
"""Or, does the doc string go here?
"""
if case == 'Upper':
s = s.upper()
elif case == 'Lower':
s = s.lower()
return func(s)
return _wrapper
@change_case
def echo(s):
return s
echo('Test', case='Upper')
在上面,文档字符串是在 change_case() 还是 _wrapper() 之后。我倾向于前者。
【问题讨论】:
-
@unutbu 我不认为这种欺骗是正确的。 OP 是在询问 decorator 的文档字符串应该去哪里,而不是如何保存修饰函数的文档字符串。
-
@unutbu 抱歉,我看不到连接。知道你必须在你的内部函数上使用
functools.wraps如何帮助你找出装饰器的文档字符串去哪里?即使您知道@wraps覆盖了内部函数的文档字符串,将文档字符串放入内部函数仍然是正确的,因为像 IDE 之类的静态代码分析器会拾取它。
标签: python python-3.x decorator python-decorators docstring