python docstring必须作为文字字符串给出; 但有时为几个函数(例如,不同的构造函数)创建类似的文档字符串是有用的,或者几个访问方法可能接受相同的参数列表(然后依赖于相同的隐藏方法),因此使用相同的描述会很好到处.对于这种情况,我可以通过赋值来构造文档字符串__doc__,我通过简单的装饰器来完成.系统工作得非常好(在python 2中),我很高兴它是多么简单,清晰和封装良好.
问题:这是个好主意吗?特别是,是否存在会被此设置混淆的工具(例如,从源提取文档字符串而不是从字节码中提取文档字符串的任何内容).解决方案仍然可以在python 3中运行吗?还有其他原因或情况会导致这种情况不明智吗?
我想以设置func_doc(作为表达)内 def.
def f():
'''My function help''' #Set the docstring
def g():
"My function " + "help" # An expression, so not read as a docstring
# can I put something here to set the docstring as an expression?
g.func_doc # is None
g.func_doc = "My function " + "help" # This works
Run Code Online (Sandbox Code Playgroud)
这可能吗?
(我可以考虑这样做的两个原因:从模块导入函数(并且您也想导入文档字符串)和使用词法分析器.)
我想这样做:
FOO_CONSTANT = 1
def foo():
"""asdf """ + str(FOO_CONSTANT)
print(foo.__doc__)
Run Code Online (Sandbox Code Playgroud)
哪个应该打印:
asdf 1
Run Code Online (Sandbox Code Playgroud)
但相反它打印
None
Run Code Online (Sandbox Code Playgroud)
我可以获得预期的输出
FOO_CONSTANT = 1
def foo():
"""asdf """
foo.__doc__ += str(FOO_CONSTANT)
print(foo.__doc__)
Run Code Online (Sandbox Code Playgroud)
但是将文档字符串分散到代码中感觉很糟糕。
是否可以在文档字符串中包含常量的值?
PS:我发现这是远程相关的。尝试的方法也不会生成有效的文档字符串,请注意,它是关于生成动态文档字符串,而 myFOO_CONSTANT预计不会更改。我只是想避免重复自己。该名称FOO_CONSTANT对于文档字符串的读者来说没有任何意义,但该值却具有意义,并且它出现在几个我不想重复的文档字符串中。