如何使用Sphinx的automodule删除静态类变量?

问题描述 投票:0回答:1

我目前正在使用Sphinx(第一次使用)为我的模块建立文档,我有一些类,其中有一些类变量是以默认值初始化的。

例如

class ConfigSettings(object):
    """Class that manages a config file
    """    
    #: Contains the path to the config file (root dir of module)
    path = Path(util.getAbsCurrentPath('configfile.ini'))

当构建文档时,变量被评估并打印出文件的完整路径,这是我不希望看到的(出于安全考虑).有没有一种方法可以不显示变量值,而只显示Sphinx的注释?

我尝试了各种组合 .. autoclass:.. autodata: 但到目前为止没有一个成功的......

这是我目前的构建文件。

Config module
----------------------------

.. automodule:: lib.config
   :members:
   :undoc-members:
   :show-inheritance:

谢谢你

卢卡

python python-sphinx docstring read-the-docs
1个回答
2
投票

Sphinx指令最简单的方法是使用注释或排除成员。

除非有严格的需求,阻止变量在模块导入时自初始化,否则因为你想呈现的方式而改变你的Python源代码是不正确的。如果你的Python源代码是正确的,那么调整你的 .rst 文件来定制演示。

your_module.py

from pathlib import Path


class YourClass:

    #: This comment is documented with the member.
    path = Path('your_path', 'configfile.ini')

your_module.rst (显示2种可能的方式)。

your_module
===========

.. automodule:: your_module
    :exclude-members: YourClass

    .. autoclass:: YourClass
        :exclude-members: path

        In this example you use an annotation while excluding from autoclass.

        .. autoattribute:: path
            :annotation: ='write your path here'

    .. autoclass:: YourClass
        :noindex:
        :exclude-members: path

        In this example you simply exclude from autoclass.

结果。

enter image description here


2
投票

你可以通过在导入时不评估路径来解决这个问题。 我认为最好的方法是在导入路径时使用 族类属性.

例如:

class ConfigSettings(object):
    @classproperty
    def path(cls):
        return Path(util.getAbsCurrentPath('configfile.ini'))
© www.soinside.com 2019 - 2024. All rights reserved.