Python 3.4+enumпонятие
@unique
проверка
Декоратор @unique запрещает дублирование значений в перечислении — вызывает ValueError при нарушении.
Синтаксис
from enum import unique
@unique
class X(Enum): ...
Без этого декоратора повтор значения не ошибка: второе имя молча становится псевдонимом первого члена, оба имени указывают на один и тот же объект, при итерации виден только первый, а в __members__ присутствуют оба. Ставьте @unique там, где дубликат — это почти наверняка опечатка; если псевдонимы задуманы специально (старое и новое название одного состояния), декоратор придётся убрать.
Примеры
from enum import Enum, unique
@unique
class Status(Enum):
ACTIVE = 1; INACTIVE = 2
# @unique
# class Bad(Enum):
# A = 1; B = 1 # → ValueError!
Status.ACTIVE.value # → 1
Status.INACTIVE.value # → 2
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности