По умолчанию, перечисления позволяют использовать несколько имен в качестве псевдонимов для одного и того же значения. Если такое поведение нежелательно, то можно использовать декоратор @enum.unique
, чтобы гарантировать, что каждое значение в перечислении используется только один раз:
Декоратор классов @enum.unique
разработан специально для перечислений модуля enum
. Он ищет атрибут перечисления __members__
, собирая все найденные псевдонимы и если они обнаружены, то поднимает исключение ValueError
с выводом подробностей:
>>> from enum import Enum, unique >>> @unique ... class Mistake(Enum): ... ONE = 1 ... TWO = 2 ... THREE = 3 ... FOUR = 3 ... # Traceback (most recent call last): ... # ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE