我一直在尝试记录基于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描述输出所有字段)
我是否想念狮身人面像扩展?或者我搞砸了语法?
答案 0 :(得分:8)
要将类的成员放入文档中,请使用: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。
答案 1 :(得分:0)
事实证明这个问题是由于mzjn的回答而引起的:我必须完全限定我..autoclass::
的类才能使它工作,因为我为..currentmodule::
指定的模块正在导入使用from x import y
语法,即以下语法有效:
.. currentmodule: mymodule.asset
.. autoclass: mymodule.asset.Asset
:members:
长话短说:检查您的进口商品!