我有一个模块,其中定义了一个模块__doc__
字符串(多行),我也想在argparse用法中使用它。
所以首先我将其定义为
'''My
multiline
module
doc-string
'''
并以以下方式使用
parser = argparse.ArgumentParser(description=str(__doc__),
formatter_class=SmartFormatter)
(请注意:由于它不是问题的一部分,因此省略了SmartFormatter
类)。
当我现在提供-h
选项时,它将在文档字符串应显示的位置打印None
。
我可以通过如下定义文档字符串来轻松解决它:
__doc__ = '''My
multiline
module
doc-string
'''
但是随后pylint开始抱怨:
<file.py>:<line>: [W0622(redefined-builtin), ] Redefining built-in '__doc__'
现在是我的问题,如何在不重新定义__doc__
的情况下访问模块文档字符串,最好是我不想忽略W0622警告。
答案 0 :(得分:2)
仅当您未将多行字符串作为文件的第一条语句时,__doc__
的值才是None
(只能在其前面加上注释)
将字符串对象显示在正确的位置后,__doc__
将不再设置为None
,将其传递给argparse
将起作用,无需重新输入-定义。
请注意,如果您使用-OO
command-line switch运行代码,则会完全删除文档字符串。
关于禁用连接到多行字符串的pylint警告,您可以使用一对注释来禁用几行的特定警告,然后在以后重新启用它们:
# pylint: disable=W0622
__doc__ = """\
# ...
"""
# pylint: enable=W0622