Ответ 1
К сожалению, переменные (и константы) не имеют docstrings. В конце концов, переменная является просто именем целого числа, и вы не захотите присоединить docstring к числу 1
, как это было бы с функцией или объектом класса.
Если вы посмотрите почти на любой модуль в stdlib, например pickle
, вы увидите, что единственная документация, которую они используют, это комментарии. И да, это означает, что help(pickle)
показывает это только:
DATA
APPEND = b'a'
APPENDS = b'e'
…
... полностью игнорируя комментарии. Если вы хотите, чтобы ваши документы отображались во встроенной справке, вы должны добавить их в docstring модуля, что не совсем идеально.
Но Sphinx может делать больше, чем встроенная справка. Вы можете настроить его для извлечения комментариев по константам или использовать autodata
, чтобы сделать это полуавтоматически. Например:
#: Indicates some unknown error.
API_ERROR = 1
Несколько строк #:
перед любой операцией присваивания или один комментарий #:
справа от оператора, работают эффективно так же, как docstrings на объектах, захваченных автодоком. Который включает обработку встроенного rST и автоматическое создание заголовка rST для имени переменной; вам нечего делать, чтобы сделать эту работу.
В качестве дополнительной заметки вы можете захотеть использовать enum
вместо отдельных констант, подобных этому. Если вы не используете Python 3.4 (которого вы, вероятно, еще не...), там backport.enum
пакет для 3.2+ или flufl.enum
(что не является идентичным, но похоже, что это было основным источником для модуля stdlib) для 2.6 +.
Рекурсивные экземпляры (не flufl.enum
, но версия stdlib/backport) могут даже иметь docstrings:
class MyErrors(enum.Enum):
"""Indicates some unknown error."""
API_ERROR = 1
"""Indicates that the request was bad in some way."""
BAD_REQUEST = 2
"""Indicates that the request is missing required parameters."""
MISSING_PARAMS = 3
Хотя они, к сожалению, не отображаются в help(MyErrors.MISSING_PARAMS)
, они являются docstrings, которые Spinx autodoc может забрать.