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

如何为FastAPI的Depends()添加正确的类型提示?

解决FastAPI Depends与mypy类型检查冲突问题

问题根源

你代码里的矛盾点在于:root函数中给x标注的类型是int,但实际通过Depends(thing)注入的是thing返回的str类型,mypy严格按照注解做类型校验,自然会抛出"int没有upper方法"的错误。

直接解决方案

把root函数里x的类型注解改成str即可——因为依赖thing的返回类型就是字符串,这才是x的实际运行时类型:

from fastapi import FastAPI, Depends

app = FastAPI()


def thing(x: int) -> str:
    return f"x is : {x}"


@app.get("/")
async def root(x: str = Depends(thing)):  # 将类型注解从int改为str
    return {"message": x.upper()}

修改后mypy能正确识别类型,不会再报错。

关于thing.__annotations__['return']的说明

虽然可以通过thing.__annotations__['return']动态获取返回类型,但这种写法既不直观,也不符合Python类型注解的常规用法,反而会降低代码可读性。静态类型检查工具(比如mypy)也无法很好地处理这种动态类型,因此不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:12:02