我最近在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
装饰器的作用是什么,在此代码段中的用途是什么?
答案 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