Python 3.11+enumфункция
enum.global_enum
глобализация
Декоратор класса-перечисления: переносит его члены в глобальное пространство имён модуля (доступ по имени без префикса) и настраивает их repr под «модульный» стиль.
Синтаксис
@enum.global_enum
Декоратор придуман ради стандартной библиотеки, где константы исторически лежат прямо в модуле (re.IGNORECASE, socket.AF_INET), а перечисление добавили позже — он даёт новый класс, не ломая старый способ обращения. В своём коде применять его почти всегда не стоит: имена появляются в globals() в обход обычного присваивания, поэтому линтеры и автодополнение IDE их не видят, а случайное совпадение имён молча затрёт существующую переменную модуля.
Примеры
import enum, re
print(callable(enum.global_enum)) # → True
print(repr(re.IGNORECASE)) # → re.IGNORECASE
import enum, re
@enum.global_enum
class Color(enum.Enum): RED = 1; GREEN = 2
print(RED is Color.RED) # → True
print(RED) # → RED
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности