#python #python-2.7 #argparse #pylint #docstring
#python #python-2.7 #argparse #pylint #строка документа
Вопрос:
У меня есть модуль, в котором a определяет __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-string без переопределения __doc__
, желательно, я не хочу игнорировать предупреждение W0622.
Ответ №1:
Значение для __doc__
будет None
только в том случае, если вы не поместили эту многострочную строку в качестве первого оператора файла (перед ним могут предшествовать только комментарии).
Как только у вас появится объект string в нужном месте, он __doc__
больше не будет установлен в None
, передача его в argparse
будет работать и не нуждается в переопределении.
Обратите внимание, что если вы запускаете свой код с помощью -OO
переключателя командной строки, строки документации полностью удаляются.
Что касается отключения предупреждений pylint, связанных с многострочной строкой, вы можете использовать пару комментариев, чтобы отключить определенные предупреждения для нескольких строк, а затем повторно включить их впоследствии:
# pylint: disable=W0622
__doc__ = """
# ...
"""
# pylint: enable=W0622