如何在Python中定义最终的classvar变量

sor*_*abz 12 python python-3.x python-3.8 python-typing

正如您在PEP 526中看到的,我们可以使用 ClassVar 字定义静态变量类。像下面这样

class Starship:
    stats: ClassVar[dict[str, int]] = {} # class variable
    damage: int = 10                     # instance variable
Run Code Online (Sandbox Code Playgroud)

正如您在PEP 591中看到的另一个打字功能,我们可以使用 Final word 定义常量(只读)变量,如下所示

class Connection:
    TIMEOUT: Final[int] = 10
Run Code Online (Sandbox Code Playgroud)

我的问题是如何组合这两个词来表示我的类静态变量是 Final?

例如下面的代码有效吗?

class Connection:
    TIMEOUT: Final[ClassVar[int]] = 10
Run Code Online (Sandbox Code Playgroud)

jua*_*aga 14

来自PEP-591

类型检查器应该推断在类主体中初始化为类变量的最终属性。变量不应同时使用 ClassVar 和 Final 进行注释。

所以你可以只使用:

class Connection:
    TIMEOUT: Final[int] = 10
Run Code Online (Sandbox Code Playgroud)