我目前正在使用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:
谢谢,
卢卡
使用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.
结果:
您可以通过在导入时不评估路径来解决此问题。我认为最好的方法是使用classproperty。
例如:
class ConfigSettings(object):
@classproperty
def path(cls):
return Path(util.getAbsCurrentPath('configfile.ini'))