mypy报错:生成器项类型"Sequence[str]"不兼容,如何修复?
修复mypy提示的生成器类型不兼容错误
针对你遇到的 main.py:38: error: Generator has incompatible item type "Sequence[str]"; expected "str" [misc] 错误,本质是生成器的实际返回元素类型和标注的期望类型不匹配,可按以下两种场景修复:
场景1:生成器本应返回单个字符串
如果你的逻辑是要生成器逐个输出字符串,而非字符串序列,问题出在代码里直接yield了一个序列(比如列表、元组)。只需把序列拆分成单个元素逐个yield即可:
- 替换原代码中类似
yield some_str_sequence的语句 - 改成用
yield from some_str_sequence(简洁写法),或者显式循环:for s in some_str_sequence: yield s
场景2:生成器确实要返回字符串序列
如果你的逻辑就是让生成器输出字符串序列,那需要修正生成器的类型标注,把返回类型从期望str改成Sequence[str](或更具体的list[str]/tuple[str])。示例:
from typing import Generator, Sequence def your_generator() -> Generator[Sequence[str], None, None]: # 原有yield序列的代码保留 yield ["foo", "bar"]
内容的提问来源于stack exchange,提问作者user200783
相关产品推荐
相关产品推荐

