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

如何在Sphinx Autodoc中隐藏Class2的类及__init__文档字符串?

解决Sphinx文档中Class2仅显示指定方法文档的问题

场景回顾

你需要实现:

  • Class1:显示所有文档字符串(类文档、__init__、所有方法)
  • Class2:仅显示method方法的文档字符串,隐藏类本身文档和__init__文档

当前配置下Class2的类文档和__init__仍会显示,可通过以下两种方案解决:


方案1:直接在rst文档中配置(适合单个类的简单需求)

在index.rst中针对Class2精确指定要显示的成员,并排除不需要的部分:

# 显示Class1的所有文档
.. autoclass:: classes.Class1
   :members:
   :undoc-members:

# 仅显示Class2的method方法,排除__init__,并隐藏类文档
.. autoclass:: classes.Class2
   :members: method
   :exclude-members: __init__
   :no-docstring:  # 隐藏类本身的文档字符串

注:no-docstring选项需要Sphinx版本≥4.1,如果版本较低,改用方案2。


方案2:自定义Sphinx事件处理器(灵活通用)

在conf.py中添加自定义逻辑,通过Sphinx的autodoc事件精准控制文档生成:

def filter_class_members(app, what, name, obj, skip, options):
    # 针对Class2,仅保留method方法
    if what == "class" and obj.__name__ == "Class2":
        return name != "method"
    # Class1不做过滤,保留所有成员
    elif what == "class" and obj.__name__ == "Class1":
        return False
    # 其他类保持默认规则
    return skip

def hide_class_doc(app, what, name, obj, options, lines):
    # 清空Class2的类文档字符串
    if what == "class" and name == "Class2":
        lines.clear()

def setup(app):
    # 注册成员过滤事件
    app.connect('autodoc-skip-member', filter_class_members)
    # 注册类文档清理事件
    app.connect('autodoc-process-docstring', hide_class_doc)

生效步骤

  1. 保存conf.py修改
  2. 重新生成文档:
    sphinx-build -b html 你的源码目录 你的输出目录
    

验证效果

重新生成后:

  • Class1会完整展示类文档、__init__方法文档及所有其他方法文档
  • Class2仅显示method方法的文档字符串,类本身和__init__的文档会被完全隐藏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:57:15