如何在我的Sphinx文档中获取常量的值?
.. automodule:: mymodule
:members:
:private-members:
这是我的测试模块:
class Test:
"""My Test Class"""
__MY_TEST_CONSTANT = 98.2
"""My test constant docu"""
目前,我得到了我的私有常量的描述,但是值是“ None”而不是“ 98.2”。
class Test:
My Test Class
__MY_TEST_CONSTANT = None
My test constant docu
我已经对此进行了测试,并且我很确定它是:未记录的功能,错误或两者兼而有之。例如,
your_module.py
class YourClass:
"""Your class."""
_one_cls = 11.1 #: one class
__two_cls = 22.2 #: two class
__three_cls__ = 33.3 #: three class
four_cls_ = 44.4 #: four class
您的模块.rst
your_module
===========
.. automodule:: your_module
:members:
:undoc-members:
:show-inheritance:
:private-members:
导致同时具有“被缠结的” _YourClass__two_cls
和“未被缠结” __two_cls
,但是只有“被缠结的”成员具有该值。
现在让我们尝试使用sphinx指令分别记录每个对象:
您的模块.rst
your_module
===========
.. automodule:: your_module
:exclude-members: YourClass
.. autoclass:: YourClass
:members:
:show-inheritance:
:private-members:
:exclude-members: _one_cls, four_cls_, __two_cls, _YourClass__two_cls
.. autoattribute:: _one_cls
.. autoattribute:: _YourClass__two_cls
..
including this would yield an error:
.. autoattribute:: __two_cls
> failed to import attribute 'YourClass.__two_cls' from module 'your_module'
.. autoattribute:: four_cls_
结果:
这里有两个值得注意的方面可以验证,提示存在错误。
通过显式包括“ mangled” _YourClass__two_cls
,HTML与第一个版本不同,现在它被[w0]包裹在blockquote
中,因此缩进显示也有所不同。
如果您试图明确显示.. autoattribute:: __two_cls
Sphinx发出以下警告:
警告:autodoc:无法从模块'your_module'中导入属性'YourClass .__ two_cls';引发了以下异常:追溯(最近一次通话):文件“ =========== \ lib \ site-packages \ sphinx \ util \ inspect.py”,第307行,位于safe_getattr中返回getattr(obj,name,* defargs)AttributeError:类型对象'YourClass'没有属性'__two_cls'
因为Sphinx导入了Python对象,所以在文档生成步骤开始之前,成员__two_cls'
已被“破坏”。 Sphinx实际上是正确的,记录“未损坏”的成员会导致文档读者产生错误的期望。