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

如何获取Python中带@overload装饰器函数的所有签名?

获取@overload装饰函数的所有签名

要获取被@overload装饰的函数的所有重载签名,可以借助typing模块的内部函数_get_overloads,再结合inspect.signature解析每个重载的签名结构。

实现代码

from typing import overload
import inspect
import typing

class Foo:
    @overload
    def foo(x: int, y: float): ...
    @overload
    def foo(y: float): ...
    def foo(a, b=None):
        if b is None:
            x, y = 1, a
        else:
            x, y = a, b
        return y / x

# 获取目标函数的所有重载定义
overload_defs = typing._get_overloads(Foo.foo)
# 转换为inspect.Signature对象列表
overload_signatures = [inspect.signature(def_) for def_ in overload_defs]

# 验证结果
print(overload_signatures)
# 输出:
# [<Signature (x: int, y: float)>, <Signature (y: float)>]

注意事项

  • typing._get_overloads是Python标准库的内部函数,官方文档未公开,未来版本可能存在变更风险。
  • 如果需要长期稳定的方案,可以考虑使用类型检查相关的第三方库,但需自行评估兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:45:46