使用类型注释记录类属性

Dje*_*ent 22 python python-sphinx autodoc python-3.6 sphinx-napoleon

我想从docstrings自动生成文档到我的代码.我有一些基本类用于存储一些数据:

class DataHolder:
    """
    Class to hold some data

    Attributes:
        batch: Run without GUI
        debug (bool): Show debug messages
    """
    batch: bool = False
    debug: bool = False
    name: str = 'default'
    """Object name"""
    version: int = 0
    """int: Object version"""
Run Code Online (Sandbox Code Playgroud)

我的rst档案:

DataHolder
==========

.. autoclass:: data_holder.DataHolder
   :members:
Run Code Online (Sandbox Code Playgroud)

我以不同的方式记录了每个属性以显示差异,这里是输出:
在此输入图像描述

看起来Sphinx无法将该Attributes部分与真实属性连接起来,这就是为什么它无法显示其默认值.

我想要实现的最终输出是对于version定义了docstring 的字段的结果batch.我想显示具有默认值和类型的属性名称,但是从类型注释中获取.看起来Sphinx在这种情况下忽略了类型注释.

我的狮身人面像扩展:

extensions = [
    'sphinx.ext.viewcode',
    'sphinx.ext.autodoc',
    'sphinxcontrib.napoleon',
]
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能实现这种行为?我找不到这种用例的好例子.

小智 -2

class DataHolder:
    """
    Class to hold some data

    Attributes:
        batch: Run without GUI
        debug (bool): Show debug messages
        name: Object name
        version: Object version
    """
    batch: bool = False
    debug: bool = False
    name: str = 'default'
    version: int = 0
    # INLINE COMMENT for ONE line
    """
    DocString as inline-comment I havent seen that yet.
    """
Run Code Online (Sandbox Code Playgroud)

  • 如果您能够解释您的答案,而不是仅仅发布代码,那么总是要好得多。对以后的人更有帮助,也更有可能被点赞。 (12认同)