Python 自动类和实例属性
根据〈代码〉。。autoattribute指令应该能够记录实例属性。但是,如果我这样做:Python 自动类和实例属性,python,python-sphinx,autodoc,Python,Python Sphinx,Autodoc,根据〈代码〉。。autoattribute指令应该能够记录实例属性。但是,如果我这样做: .. currentmodule:: xml.etree.ElementTree .. autoclass:: ElementTree .. autoattribute:: ElementTree._root 然后在构建时,我会得到一个AttributeError: Traceback (most recent call last):etree.ElementTree.ElementTree
.. currentmodule:: xml.etree.ElementTree
.. autoclass:: ElementTree
.. autoattribute:: ElementTree._root
然后在构建时,我会得到一个AttributeError:
Traceback (most recent call last):etree.ElementTree.ElementTree
File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/ext/autodoc.py", line 326, in import_object
obj = self.get_attr(obj, part)
File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/ext/autodoc.py", line 232, in get_attr
return safe_getattr(obj, name, *defargs)
File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/util/inspect.py", line 70, in safe_getattr
raise AttributeError(name)
AttributeError: _root
即使我实例化ElementTree
并尝试访问\u root
属性,它仍然可以正常工作:
>>> from xml.etree.ElementTree import ElementTree
>>> e = ElementTree()
>>> hasattr(e, '_root')
True
我做错了什么
(实际上,我自己的一个类有这个问题,但我只是使用ElementTree类作为示例,因为它在标准库中)这看起来像是处理非公共实例属性的错误。斯芬克斯应该能够识别 我不能说这应该怎么解决。有一个打开的错误报告似乎与此相关: 如果将以下行添加到ElementTree.py中的
ElementTree
类的定义中
__slots__ = ["_root"]
然后你得到的
属性错误就消失了。我也确认了。你知道这是否已修复,如果已修复,版本是什么吗?链接的错误报告已于2019年5月30日关闭。