分配时列出[可选[int]]类型检查



mypy似乎足够聪明,可以检测到在检查了None的可选值后,类型的Optional部分被忽略。

意思是:声明值:Optional[int]会导致值在if value is not None之后表现得像int

我想我陷入了类似的问题,但Optional intlist中。

以下是演示片段

a: List[Optional[int]] = [None, None]
a[0] = 5
a[1] = 10
b: int = 0
if a[0] != None:
b = a[0]

它显示错误

test.py:12: error: Incompatible types in assignment (expression has 
type "Optional[int]", variable has type "int")
Found 1 error in 1 file (checked 1 source file)

我确实检查了a[0] is not None,但我不知道为什么它仍然无法将a[0]的类型从int | None缩小到int,因为None的条件已经检查过了。

我相信mypy目前了解is Noneis not None检查:

https://github.com/python/mypy/issues/8000

您需要对mypy执行if self.ignore is None以获取[…]

显然

if a[0] is not None:

应该起作用。注意CCD_ 18和CCD_。

相关内容

  • 没有找到相关文章

最新更新