如何使用带有Sphinx的自动模块删除静态类变量?

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

我目前正在使用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 member docstring autodoc
2个回答
1
投票

使用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


1
投票

您可以通过在导入时不评估路径来解决此问题。我认为最好的方法是使用classproperty

例如:

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