Что делает @unique decorator в python? - PullRequest
0 голосов
/ 15 мая 2019

Я недавно наткнулся на этот код из вопроса stackoverflow :

@unique
class NetlistKind(IntEnum):
  Unknown = 0
  LatticeNetlist = 1
  QuartusNetlist = 2
  XSTNetlist = 4
  CoreGenNetlist = 8
  All = 15

def __contains__(self, item):
  return  (self.value & item.value) == item.value

Что делает декоратор @unique и какова его цель в этом фрагменте кода?

1 Ответ

3 голосов
/ 15 мая 2019

Из документации (спасибо @HFBrowning):

[@ unique is] декоратор класса специально для перечислений. Он ищет членов перечисления , собирая любые псевдонимы, которые он находит; если таковые найдены, ValueError повышается с деталями

Обычно возникает ошибка, если есть какие-либо повторяющиеся значения перечисления.

Этот код

 class Mistake(Enum):
     ONE = 1
     TWO = 2
     THREE = 3
     FOUR = 3

Выдает эту ошибку:

ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE
...