跳到内容

convert-typed-dict-functional-to-class (UP013)

源自 pyupgrade linter。

有时提供修复。

作用

检查使用函数式语法的 TypedDict 声明。

为什么这不好?

TypedDict 类型可以通过函数式语法 (Foo = TypedDict(...)) 或类语法 (class Foo(TypedDict): ...) 定义。

类语法更具可读性,通常优于函数式语法。

但是,在某些情况下,不可能使用基于类的语法。此规则不适用于这些情况。 也就是说,如果任何 TypedDict 字段是以下情况,则无法使用基于类的语法:

示例

from typing import TypedDict

Foo = TypedDict("Foo", {"a": int, "b": str})

建议改为

from typing import TypedDict


class Foo(TypedDict):
    a: int
    b: str

修复安全性

如果 TypedDict 定义的范围内有任何注释,则此规则的修复被标记为不安全,因为自动修复将删除这些注释。

参考