我一直在尝试记录基于MongoEngine的应用程序,但是我在Document类上记录属性时遇到了问题。
我采用了正确的语法,如下所示:
class Asset(Document):
#: This is the URI of the document
uri = StringField()
我已经尝试过各种记录这些属性的方法,我发现这些属性甚至添加了一个不是MongoEngine字段的属性,只是为了确保这不是问题所在:
class Asset(Document):
"""
The representation of a file uploaded into the data store.
"""
#: This is a test attribute.
foo = 'bar'
"""baz?"""
#: This is a URI.
uri = StringField(required=True)
"""This is a URI """
我已在相应的.rst
文件中尝试了各种指令组合。目前它看起来像这样:
.. currentmodule:: mymodule.asset
.. autoclass:: Asset
.. autoattribute:: Asset.foo
.. autoattribute:: Asset.uri
输出不是很令人满意:foo
属性根本没有显示文档,uri字段有MongoEngine的“一个unicode字符串字段”。 (StringField
类的文档)作为文档。此外,属性文档不会放在类的“下”(与automodule +:members: - 一起输出所有带有MongoEngine描述的字段)
我想念狮身人面像扩展吗?或者我搞砸了语法?
要将类的成员放入文档中,请使用:members:
选项:
.. autoclass:: Asset
:members:
没有:members:
,插入only the class docstring。
另请参阅autodoc_default_flags
配置选项。
您可以使用autoattribute
和:members:
获得与上面相同的结果(请注意缩进):
.. autoclass:: Asset
.. autoattribute:: foo
.. autoattribute:: uri
我无法重现使用StringField的docstring记录uri
属性的问题。
我正在使用Sphinx 1.2.2。
事实证明这个问题是由于mzjn的回答而引起的:我必须完全限定类我是..autoclass::
ing才能工作,因为我为..currentmodule::
指定的模块导入使用了from x import y
语法,即以下语法有效:
.. currentmodule: mymodule.asset
.. autoclass: mymodule.asset.Asset
:members:
长话短说:检查你的进口!