0

我们有一个文件,其中有很多常量定义。当发生名称冲突时,python 会为其分配一个新值,而不会警告该名称的常量已经存在。这是潜在的错误来源。我们使用的静态代码分析器没有找到它(Sonarqube 和 pylint)。如何确保没有名称冲突?

PS:PyCharm 提出了“上面重新声明定义但没有使用”,但我不使用 PyCharm。

4

1 回答 1

1

正如 Olvin Roght 所说,使用 typing.Final

from typing import Final
MAX_SIZE: Final = 9000
MAX_SIZE += 1 # Error reported by type checker

请注意,这将在您的类型检查器中返回错误,但代码仍会运行并且值仍会更改。

这需要 Python 3.8+


或者,您可以这样做:

from dataclasses import dataclass
@dataclass(frozen=True)
class Consts:
  MAX_SIZE = 9000
myconsts = Consts()
myconsts.MAX_SIZE= 1 # generates an error
于 2020-04-20T12:33:15.063 回答