You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sphinx中仅继承单个父类的文档字符串?

解决方案

方法1:通过rst文档的autodoc指令显式指定

直接在对应类的.rst文档配置中,通过inherited-members参数限定要继承文档的父类范围即可,示例配置如下:

.. autoclass:: MyCls
   :show-inheritance:
   :inherited-members: Base1

添加该配置后,Sphinx只会拉取Base1下的成员文档到MyCls的文档中,完全跳过Base2的内容。

方法2:在Python代码中手动指定文档继承逻辑

如果不想修改rst配置,可以直接在类定义中显式绑定文档来源,修改后代码如下:

class Base1:
  pass

class Base2:
  pass

class MyCls(Base1, Base2):
  """自定义类说明,无自定义内容可留空"""
  __doc__ = __doc__ or Base1.__doc__

Sphinx生成文档时会优先读取类的__doc__属性,手动绑定后会跳过默认的多继承文档合并逻辑,只继承Base1的文档。

方法3:全局配置跳过指定父类的文档继承

如果项目有大量同类多继承场景需要统一处理,可以在Sphinx的conf.py中添加钩子函数,全局跳过Base2的成员文档继承:

def skip_base2_member(app, what, name, obj, skip, options):
    # 跳过所有Base2的公开成员
    if hasattr(Base2, name) and not name.startswith('_'):
        return True
    return skip

def setup(app):
    app.connect('autodoc-skip-member', skip_base2_member)

内容的提问来源于stack exchange,提问作者Rishidev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:06:03