您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中记录模块常量?

如何在Python中记录模块常量?

不幸的是,变量(和常量)没有文档字符串。毕竟,变量只是整数的名称,并且您不希望1像在函数或类对象上那样将文档字符串附加到数字上。

如果您看一下stdlib中的几乎所有模块,例如pickle,您都会看到它们唯一使用的文档是注释。是的,这意味着help(pickle)显示以下内容

DATA
    APPEND = b'a'
    APPENDS = b'e'
    …

……完全忽略了评论。如果要使文档显示在内置帮助中,则必须将它们添加到模块的文档字符串中,这并不完全理想。

但是Sphinx可以做的比内置帮助还多。您可以配置它以提取常量的注释,或用于autodata自动执行注释。例如:

#: Indicates some unkNown error.
API_ERROR = 1

#:任何赋值语句之前的多行或#:该语句右边的单个注释,都与自动文档拾取的对象上的文档字符串有效地相同。其中包括处理内联rST,并为变量名称自动生成rST标头;无需任何额外的工作即可完成这项工作。

作为附带说明,您可能需要考虑使用enum诸如此类的而不是单独的常量。如果您不使用Python 3.4(可能尚未使用……),则有一个backport.enum3.2或以上版本的软件包,或者flufl.enum(虽然不相同,但很相似,因为它是stdlib模块的主要灵感)。 2.6+。

枚举实例(不是flufl.enum,但为stdlib / backport版本)甚至可以具有文档字符串:

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),但是它们是Sphinx autodoc可以拾取的文档字符串。

python 2022/1/1 18:28:16 有177人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶