想象一下我有一个模块名module.py
并在其中,我有一个名为_VAR
的私有变量,我想在我的sphinx文档中打印它的值。
module.py
_VAR = 20
在狮身人面像中,我想要这样的事情:
index.rst
The value of ``module._VAR`` is :py:print:`module._VAR`
输出结果为:
The value of module._VAR is 20
答案 0 :(得分:2)
完全可以通过autodoc功能执行您想要的操作。您只需要确保在代码中明确记录该值,如下所示:
_VAR = 20 #: Notice the colon, this tells sphinx to use this comment as docstring for this value
然后,您可以通过automodule
与include-private
进行操作,或者在该变量名称上明确执行autodata
,从而将此值添加到您的文档中。
请注意,您可以使用相同的策略(#:
)明确记录类的属性,它们将显示在autoclass
(或automodule
的文档中隐式地将文档类),包括它们被初始化的任何文字值。
答案 1 :(得分:1)
如果Python具有(模块级)常量,那么只需导入模块,Sphinx就可以提取这样的常量。这就是你想要的吗?
我认为这在一般情况下是不可能实现的。您所展示的是模块级名称,该名称将在其他编程语言中显式声明为常量(例如,通过const
关键字)。在整个程序运行时间内,不允许更改常量的值。但是,Python中没有常量概念(人们使用常量,只是不更改某些值,但没有语言特性/关键字告诉解释器某个值不允许更改)
因此,我的有根据的猜测是,你提出的建议是不可能的,因为Python缺乏常量。
也就是说,有可能在导入后立即读出模块级变量的所有值。将这些值放入文档可能毫无意义,因为无法保证这些值在整个程序运行时都是正确的。