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

Sphinx中autofunction指令无法加载重载函数文档字符串问题

解决Sphinx autofunction不显示@overload函数文档字符串的问题

默认情况下,Sphinx的autofunction指令只会提取函数实现体的文档,不会自动展示每个@overload装饰的函数的文档字符串。要实现每个重载原型下方显示对应文档,按以下步骤操作:

1. 确保Python代码中@overload函数的文档字符串正确编写

每个@overload装饰的函数都要单独写好文档字符串,示例代码如下:

from typing import overload

@overload
def add_object(obj: str) -> bool:
    """将字符串类型对象添加到框架中。
    
    参数:
        obj: 要添加的字符串对象
    返回:
        添加成功返回True,失败返回False
    """
    ...

@overload
def add_object(obj: int, priority: int = 1) -> bool:
    """将整数类型对象添加到框架中,可指定优先级。
    
    参数:
        obj: 要添加的整数对象
        priority: 可选,添加优先级,默认1
    返回:
        添加成功返回True,失败返回False
    """
    ...

def add_object(obj, priority=None):
    # 实际实现代码
    if isinstance(obj, str):
        return True
    elif isinstance(obj, int):
        return True
    return False

2. 修改Sphinx配置文件conf.py

在conf.py中确保启用sphinx.ext.autodoc扩展,并开启overloads选项:

# 已有的扩展列表中加入sphinx.ext.autodoc(如果没加的话)
extensions = [
    'sphinx.ext.autodoc',
    # 其他你用到的扩展...
]

# 设置autodoc默认选项,关键是开启overloads
autodoc_default_options = {
    'overloads': True,
    # 其他可选配置,比如members、show-inheritance等
}

3. 重新构建文档

执行Sphinx的构建命令(比如make html),重新生成文档后,framework.add_object的每个重载原型下方就会显示对应的文档字符串了。

如果你的Sphinx版本较旧(低于3.0),可能不支持overloads选项,建议升级到最新稳定版。

内容的提问来源于stack exchange,提问作者David Hožič

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:31:25