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