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

如何为包装函数复用原函数的返回类型注解?避免重复定义

复用Python函数的返回类型注解避免重复定义

针对该场景,要让包装函数parse_from_something的返回类型与parse完全一致且无需重复编写类型,可通过以下方式实现:

方法:使用ReturnType提取函数返回类型

Python 3.10及以上版本的标准库typing模块提供了ReturnType工具,专门用于提取函数的返回类型注解。若使用更早的Python版本,可安装typing_extensions库来使用该功能。

代码示例

from typing import Union, List, ReturnType
# 若Python版本<3.10,替换为:from typing_extensions import ReturnType

def parse(what: str) -> Union[None, int, bool, float, complex, List[int]]:
    # 函数实现逻辑
    pass

class SomeType:
    def extract_string(self) -> str:
        # 函数实现逻辑
        pass

def parse_from_something(which: SomeType) -> ReturnType[parse]:
    return parse(which.extract_string())

原理说明

ReturnType[parse]会直接引用parse函数的返回类型注解,后续若parse的返回类型发生变更,parse_from_something的返回类型会自动同步,无需手动修改,彻底避免了代码重复和类型不一致的问题。

备选方案:直接访问__annotations__(不推荐)

虽然可以通过parse.__annotations__['return']直接获取返回类型,但这种方式属于访问内部属性,可读性差且部分静态类型检查工具无法正常识别,因此不建议使用。

内容的提问来源于stack exchange,提问作者Marcus Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:27:52