python - 无法从 argparse 访问 __doc__ 而不重新定义它
问题描述
我有一个模块,其中定义了一个模块__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 警告。
解决方案
的值__doc__
仅None
当您没有将该多行字符串作为文件的第一条语句时(只有注释可以放在它前面)。
一旦字符串对象出现在正确的位置,__doc__
将不再设置为None
,将其传递给argparse
将起作用并且不需要重新定义。
请注意,如果您使用-OO
命令行 switch运行代码,则文档字符串将被完全删除。
至于禁用连接到多行字符串的 pylint 警告,您可以使用一对注释禁用几行的特定警告,然后重新启用它们:
# pylint: disable=W0622
__doc__ = """\
# ...
"""
# pylint: enable=W0622
推荐阅读
- javascript - 预期的半冒号 Ajax - Jquery
- c# - sendkeys 有时会输入错误的字符
- yii2 - Yii2:如何在andWhere和orWhere中使用优先级?
- bpmn - 如何对进出同一角色的多个实例的消息流进行建模?
- javascript - 如何在 React Native 应用程序和网站中实现位置的实时跟踪?
- tabulator - Postgres 数据库中的制表数据
- python - 为什么我会收到“ZeroDivisionError:浮点除以零”错误?
- python - 从多列表中找到正确的组合
- javascript - JavaScript 函数参数引用对象
- java - 无法在java中创建objectMapper