Как избежать переопределения констант в python 3 - PullRequest
0 голосов
/ 20 апреля 2020

У нас есть файл, в котором у нас есть постоянные определения, и их много. Когда происходит конфликт имен, python присваивает ему новое значение без предупреждения, что константа с таким именем уже существует. Это потенциальный источник ошибок. Анализаторы кода Stati c, которые мы используем, не нашли его (Sonarqube и Pylint). Как убедиться, что нет именных коллизий?

PS: PyCharm поднимает «Переопределено как определено выше без использования», но я не использую PyCharm.

1 Ответ

1 голос
/ 20 апреля 2020

Как сказал Олвин Ротт, используйте 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
...