在前面学习了同一个值,可以使用不同的名称来定义,这样方便起别名。但有时候,又想严格一点,一个值只能起一个枚举名称,也就是不同的名称的值不能重复,这个怎么办呢?可以使用@enum.unique装饰器,这样当不同名称的值重复时,就会抛出异常ValueError: duplicate values,达到强制名称不一样,让值保持唯一化,如下例:
结果输出如下:
Traceback (most recent call last):
File ".../python_Game1/example/enum_unique_enforce.py", line 9, in <module>
class BugStatus(enum.Enum):
File "...\Python\Python36\lib\enum.py", line 834, in unique
(enumeration, alias_details))
深入浅出Numpy
五子棋游戏开发
http://edu.csdn.net/course/detail/5487
#python 3.6
#蔡军生
#http://blog.csdn.net/caimouse/article/details/51749579
#
import enum
@enum.unique
class BugStatus(enum.Enum):
new = 7
incomplete = 6
invalid = 5
wont_fix = 4
in_progress = 3
fix_committed = 2
fix_released = 1
# This will trigger an error with unique applied.
by_design = 4
closed = 1
结果输出如下:
Traceback (most recent call last):
File ".../python_Game1/example/enum_unique_enforce.py", line 9, in <module>
class BugStatus(enum.Enum):
File "...\Python\Python36\lib\enum.py", line 834, in unique
(enumeration, alias_details))
ValueError: duplicate values found in <enum 'BugStatus'>: by_design -> wont_fix, closed -> fix_released