提问人:sorosh_sabz 提问时间:2/20/2021 最后编辑:yivisorosh_sabz 更新时间:10/15/2021 访问量:7741
如何在python中定义最终的classvar变量
How to define final classvar variable in python
问:
正如您在 PEP 526 中看到的,我们可以使用 ClassVar 字定义静态变量类。如下图所示
class Starship:
stats: ClassVar[dict[str, int]] = {} # class variable
damage: int = 10 # instance variable
另一个打字功能,正如您在 PEP 591 中看到的那样,我们可以用 Final word 定义常量(只读)变量,如下所示
class Connection:
TIMEOUT: Final[int] = 10
我的问题是,如何结合这两个词来表示我的类静态变量是 Final?
例如,下面的代码是否有效?
class Connection:
TIMEOUT: Final[ClassVar[int]] = 10
答:
13赞
juanpa.arrivillaga
2/20/2021
#1
来自 PEP-591:
类型检查器应推断出在 类体作为类变量。变量不应是 使用 ClassVar 和 Final 进行批注。
所以你只能使用:
class Connection:
TIMEOUT: Final[int] = 10
评论
0赞
pabouk - Ukraine stay strong
7/26/2023
在当前的 Python 版本中,甚至不允许将两个类型限定符组合在一起。如果不使用---禁用注释的评估,则会导致运行时错误 示例:---> ---或反转时: --- mypy 显示以下错误消息:from __future__ import annotations
class MyClass: x: Final[ClassVar[int]] = 1
TypeError: typing.ClassVar[int] is not valid as type argument
TypeError: typing.Final[int] is not valid as type argument
error: Variable should not be annotated with both ClassVar and Final
评论
x: str = 42