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

如何让Mypy检测TypedDict中html字段的类型赋值错误?

解决Mypy未检测TypedDict字段类型不匹配的问题

问题原因

Mypy默认允许隐式类型转换:对于实现了__str__方法的对象(比如BeautifulSoup的Tag和NavigableString),会默认允许将其赋值给str类型的字段,因此不会触发类型错误;而整数123属于内置类型,Mypy默认禁止这类隐式转换,所以赋值时会报错。

解决方案

修改mypy.ini配置,开启禁止隐式类型转换的选项:

[mypy]
python_version = 3.10
warn_unused_configs = True
disallow_incomplete_defs = True
disallow_untyped_defs = True
disallow_implicit_conversion = True  # 新增这一行,禁止隐式类型转换

额外说明

  1. 如果需要保留body的字符串表示,可以显式转换为str,这样既符合类型要求,Mypy也不会报错:
    example: Example = {"html": str(body),
                        "text": html_to_text(body.get_text())}
    
  2. 若希望开启全部严格类型检查,也可以直接设置strict = True(该选项包含disallow_implicit_conversion等多项严格规则):
    [mypy]
    python_version = 3.10
    warn_unused_configs = True
    strict = True
    

验证效果

添加配置后,Mypy会在{"html": body}这一行提示类似以下的错误,符合你的预期:

error: Incompatible types (expression has type "Tag | NavigableString", TypedDict key "html" has type "str")  [assignment]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:15:13