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

Python 如何使用带Sphinx的automodule删除静态类变量?,python,python-sphinx,member,docstring,autodoc,Python,Python Sphinx,Member,Docstring,Autodoc,我目前正在使用Sphinx(第一次使用它)为我的模块构建文档,我有一些类,它们有一些用默认值初始化的类变量 例如: 类配置设置(对象): “”“管理配置文件的类 """ #:包含配置文件的路径(模块的根目录) path=path(util.getAbsCurrentPath('configfile.ini')) 在构建文档时,会对变量进行求值,并打印我不想要的文件的完整路径(出于安全原因)。 有没有一种方法可以不显示变量值,而只显示使用Sphinx的注释 我尝试了的各种组合。。自动类:

我目前正在使用Sphinx(第一次使用它)为我的模块构建文档,我有一些类,它们有一些用默认值初始化的类变量

例如:

类配置设置(对象):
“”“管理配置文件的类
"""    
#:包含配置文件的路径(模块的根目录)
path=path(util.getAbsCurrentPath('configfile.ini'))
在构建文档时,会对变量进行求值,并打印我不想要的文件的完整路径(出于安全原因)。 有没有一种方法可以不显示变量值,而只显示使用Sphinx的注释

我尝试了
的各种组合。。自动类:
。。autodata:
但到目前为止,它们都不起作用

这是我当前在生成文件中的内容:

Config模块
----------------------------
.. automodule::lib.config
:成员:
:观察员委员会成员:
:显示继承:

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

例如:

class ConfigSettings(object):
    @classproperty
    def path(cls):
        return Path(util.getAbsCurrentPath('configfile.ini'))

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

除非严格要求在模块导入时停止变量自初始化,否则更改Python源代码是不正确的,因为您希望以这种方式显示它。如果Python源代码正确,则调整
.rst
文件以自定义演示文稿

您的_module.py

从pathlib导入路径
你的班级:
#:此评论与成员一起记录。
path=path('your_path','configfile.ini')
您的_module.rst(显示了两种可能的方式)

结果是:


第二个
中的
:noindex:
选项。。自动类:
仅用于防止Sphinx发出警告,禁止其使用
两次记录YourClass。。autoclass:
,因为这会导致常规索引中出现重复条目。不幸的是,即使使用建议的解决方法,值仍会打印到输出中。这确实是我想要的。谢谢!!通过我的尝试,我非常接近您的解决方案,但我一直收到重复引用的警告,因为我没有将该类从模块中排除!!
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.