报告对 `typing.cast` 的调用,其中源类型的任何可能值都无法赋给目标类型。 我们可以将这称为“非重叠”类型。
这通常表明有错误。 如果转换是有意为之,首先将表达式转换为公共父类型,以明确表达意图。
示例:
from typing import cast
# 非重叠类型 — 可能是错误
cast(int, "a") # 'str' -> 'int'
cast(list[int], ["a"]) # 'list[str]' -> 'list[int]'
# 推荐的显式逃生舱口是使用“双重转换”
cast(int, cast(object, "a")) # 正常
# 合法的重叠情况
cast(int, object()) # 有效的向下转换
cast(object, 1) # 有效的向上转换
# 但以下是无效转换,因为 list 不可变。 当前不受此检查支持
int_list = [1, 2, 3]
cast(list[object], int_list)
该检查依赖于静态类型信息;当类型未知时,不会报告警告。 尚未考虑泛型类型的差异。