@unique装饰器在python中做什么?

时间:2019-05-14 22:36:53

标签: python decorator

我最近在stackoverflow question上遇到了这段代码:

@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 个答案:

答案 0 :(得分:3)

documentation(感谢@HFBrowning):

  

[@ unique是]专用于枚举的类装饰器。它搜索枚举的成员,并收集找到的所有别名;如果找到任何值,则会引发ValueError及其详细信息

基本上,如果枚举值重复,则会引发错误。

此代码

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

产生此错误:

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