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

如何在Sphinx autosummary中排除继承的类方法

解决Sphinx autosummary自动生成PyTorch nn.Module继承方法的问题

下面给你几个可行的解决方案:

方案一:用自定义钩子过滤继承方法

在Sphinx的conf.py里添加一段代码,专门跳过那些未被你重写的nn.Module原生方法,只保留你自己定义或重写的成员:

import torch.nn as nn

def skip_nn_module_inherited_members(app, what, name, obj, skip, options):
    # 仅处理类方法
    if what == "method":
        # 检查该方法是否为nn.Module的原生方法
        if hasattr(nn.Module, name):
            # 若方法归属类不是nn.Module,说明是你重写的,保留
            if obj.__qualname__ != getattr(nn.Module, name).__qualname__:
                return False
            # 否则是继承的原生方法,跳过
            return True
    return skip

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

方案二:给autosummary添加强制选项

你之前在autodoc_default_options中设置的inherited-members=False可能未被递归生成的模块继承,试试直接在autosummary块中添加该选项:

.. autosummary::
    :toctree: generated/
    :recursive:
    :inherited-members: False

    my_package

该配置会让所有递归生成的类都跳过继承成员。

方案三:更新Sphinx相关包

旧版本的Sphinx可能存在inherited-members选项不生效的兼容性问题,先把相关包更新到最新版:

pip install --upgrade sphinx sphinx-autodoc-typehints

最后记得清理缓存重建

修改配置后,先删除之前生成的文档缓存,再重新构建,避免旧缓存干扰:

make clean
make html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:31:05