Python Glossary English

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Сообщить о неточности