setter 参数类型未显示在 Sphinx 文档中

Types of setter arguments not showing in Sphinx documentation

我不知道如何根据 setter 的参数让类型提示出现在 Sphinx 生成的文档中。

我有一个 Python class,它有一个名为 batches 的属性,我在 属性 中有文档字符串,并在 setter 参数 (int) 中输入提示.以下是最小示例,但 here 是完整版本

class Settings:
    """Settings used"""

    def __init__(self):
        self._batches = None 

    @property
    def batches(self):
        """Number of batches to simulate"""
        return self._batches

    @batches.setter
    def batches(self, batches: int):
        self._batches = batches

我正在使用 sphinx 构建文档并使用以下命令

sphinx-build -b html ./source/ ./build/html/

conf.py 中,根据 sphinx 文档的建议,我在拿破仑包之前添加了“sphinx_autodoc_typehints”包。我也试过把它放在后面只是为了检查:-)

docs I am using :autosummary:

.. autosummary::
   :toctree: generated
   :nosignatures:
   :template: myclass.rst

文档 are building 但没有出现类型提示:

使用装饰器制作的 属性 在所有方面都与属性相同。它不是一个函数。狮身人面像对此表示敬意。实际上,Sphinx 只阅读了 @property 方法的文档,根本没有阅读 @property.setter 方法的文档。

在您的情况下,为基础 属性 指定类型提示应该就足够了。

class Settings:

    @property
    def batches(self) -> int:
        """Number of batches to simulate"""
        return self._batches

如果您的 setter 接受其他类型(如浮点数、字符串等)并设法在内部将此输入转换为 int,您可以在基础 属性 中将其记录为散文,像这样。

class Settings:

    @property
    def batches(self) -> int:
        """Number of batches to simulate

        When set with a non integer value, the value is coerced
        as an integer, or will raise a :exc:`TypeError` if this 
        fails.
        """
        return self._batches

    @batches.setter
    def batches(self, batches: Union[int,str]):
        self._batches = int(batches)