跳到内容

runtime-string-union (TC010)

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

作用

检查 X | Y 样式的联合类型中是否存在字符串字面量。

为什么这不好?

PEP 604 引入了一种基于 | 运算符的新的联合类型注解语法。

虽然 Python 的类型注解通常可以被包装在字符串中以避免运行时评估,但在 X | Y 样式的联合类型中使用字符串成员会导致运行时错误。

相反,删除引号,将整个联合类型用引号括起来,或使用 from __future__ import annotations 来完全禁用注解的运行时评估。

示例

var: "Foo" | None


class Foo: ...

建议改为

from __future__ import annotations

var: Foo | None


class Foo: ...

或者,扩展引号以包含整个联合类型

var: "Foo | None"


class Foo: ...

参考