Python autodoc:基类以全名显示,而不考虑导入

Python autodoc:基类以全名显示,而不考虑导入,python,python-sphinx,Python,Python Sphinx,我希望我能在这里找到解决这个相当复杂问题的办法 我使用sphinx和intersphinx来记录我的项目 我有一个从mongoengine.Document继承的类 当我使用sphinx apidoc和sphinx构建(通过sphinx quickstart自动生成的Makefile)构建sphinx文档时,对mongoengine.Document类的引用显示为mongoengine.Document.Document,这实际上是正确的完全限定名,但这是一个问题,因为在mongoengine项

我希望我能在这里找到解决这个相当复杂问题的办法

我使用sphinx和intersphinx来记录我的项目

我有一个从mongoengine.Document继承的类

当我使用sphinx apidoc和sphinx构建(通过sphinx quickstart自动生成的Makefile)构建sphinx文档时,对mongoengine.Document类的引用显示为mongoengine.Document.Document,这实际上是正确的完全限定名,但这是一个问题,因为在mongoengine项目中,该类被标记为mongoengine.Document,所以intersphinx根本不链接

有没有一种方法可以告诉sphinx在基类被导入时(在我从mongoengine导入文档中得到的代码中)生成基类信息,而不是它的完整模块路径

以下代码:

from mongoengine import Document, EmbeddedDocumentListField

class MyDocument(Document):
""" my docstring """
它会生成一些html,如:

class myproj.models.MyDocument(*args, **values) Bases:
mongoengine.document.Document  <-- intersphinx does not find the link to external doc!
class myproj.models.MyDocument(*args,**值)的基础:

mongoengine.document.document属性包含定义类的模块的名称。
Document.\u_模块\u_
的值为“mongoengine.Document”

该属性是可写的,因此解决方法是在代码中添加以下行:

Document.__module__ = "mongoengine"

棘手的问题。我不知道怎么解决它。类的基由
\uuuu base\uuu
变量确定<代码>MyDocument.\uuuuu基\uuuuu
返回
(,)
。找到解决方法。将
文档添加到您的代码中。\uu module\uu=“mongoengine”
。@mzjn感谢它的工作!我想你可以从中得出答案。这不是一个可扩展的解决方法。
Document.__module__ = "mongoengine"