跳到内容

runtime-cast-value (TC006)

源自 flake8-type-checking 代码检查器。

修复总是可用的。

作用

检查 typing.cast() 调用中未加引号的类型表达式。

为什么这不好?

此规则有助于在您的代码库中强制执行一致的风格。

通常需要引用传递给 cast() 的第一个参数,因为类型表达式可能涉及前向引用或仅在 typing.TYPE_CHECKING 块中导入的符号的引用。 这可能会导致不同的 cast() 调用之间出现视觉上的不一致,其中某些类型表达式被引用,而另一些则未被引用。 通过启用此规则,您可以确保传递给 cast() 的所有类型表达式都被引用,从而在您的所有 cast() 调用中强制执行风格一致性。

在某些 cast() 用于热循环的情况下,此规则还有助于避免在运行时重复评估复杂类型表达式所带来的开销。

示例

from typing import cast

x = cast(dict[str, int], foo)

建议改为

from typing import cast

x = cast("dict[str, int]", foo)

修复安全性

只要类型表达式不跨越多行,并且除最后一行之外的任何行上都包含注释,此修复就是安全的。