python-如何在文档字符串中包含变量?
我正在使用cmd模块。有一个命令,我想记录如下:python-如何在文档字符串中包含变量?,python,Python,我正在使用cmd模块。有一个命令,我想记录如下: def do_this(self,arg) "this command accepts these values {values}".format(values="legal values") 理由是我只想输入一次法律价值列表。我发现我可以稍后更改文档字符串,但我认为这是一个黑客行为。有没有办法做到这一点?之后更改文档字符串(通过分配给do\u this.\uu doc\uuu)是唯一的方法 或者,如果你想让它看起来更好,你可以使用装饰
def do_this(self,arg)
"this command accepts these values {values}".format(values="legal values")
理由是我只想输入一次法律价值列表。我发现我可以稍后更改文档字符串,但我认为这是一个黑客行为。有没有办法做到这一点?之后更改文档字符串(通过分配给
do\u this.\uu doc\uuu
)是唯一的方法
或者,如果你想让它看起来更好,你可以使用装饰器——但它仍然指定这样做
def doc(docstring):
def document(func):
func.__doc__ = docstring
return func
return document
@doc("this command accepts these values: {values}".format(values=[1, 2, 3])
def do_this(self, arg):
pass
由于变量中有此值,您可以在文档中引用它:
# mymodule.py
legal_values = {'one', 'two', 'three'}
def do_this(self,arg)
"""this command accepts these values: see `mymodule.legal_values`"""
您应该使用functools.wrapps
作为装饰器,这样您就不会丢失任何东西?@gerrit negative,这不是一个包装器(将内部func重命名为document
)聪明,我必须检查装饰器。我对python还不熟悉,现在感觉就像是在消防站喝水。关于这一点,有一个简单的问题。我可以在多个函数上使用相同的@doc吗?或者我需要为每个do_使用一个唯一的doc函数吗?@kdubs这自然是可重用的。您可以将其放在一个模块中,然后根据需要导入到其他模块中。尝试了此方法。似乎不起作用。这些都是关于合法_值的反勾号?@kdubs如果您使用Sphinx制作模块内容的HTML文档,它们就会起作用,类似于Python文档。里面会有一个超链接。但是,它在联机帮助中不起特殊作用。@kdubs它不会在docstring中插入值,但它是用户的信息,用户可以在哪里找到这些值。当我键入help(do\u this)
或在源代码中看到do\u this
时,我会明白我应该看到help(mymodule.legal\u values)
来了解这些值。啊。好啊我想另一个答案就是我想要的。它显示在cmd的帮助中