枚举标签名不能重复, 但是数值可以相同, 后面相同的标签表示第一个枚举的别名
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW) VIP.YELLOW = 6 >>> VIP.YELLOW Traceback (most recent call last): File "2.py", line 11, in <module> VIP.YELLOW = 6 File "/Users/rxu/.pyenv/versions/3.5.3/lib/python3.5/enum.py", line 311, in __setatt r__ raise AttributeError('Cannot reassign members.') AttributeError: Cannot reassign members.
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW.value) >>> 1
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW.name) >>> YELLOW
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP['YELLOW']) >>> VIP.YELLOW
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 for i in VIP.__members__: print(i) for i in VIP.__members__.items(): print(i) >>> YELLOW GREEN BLACK RED ('YELLOW', <VIP.YELLOW: 1>) ('GREEN', <VIP.GREEN: 2>) ('BLACK', <VIP.BLACK: 3>) ('RED', <VIP.RED: 4>)
对数值有整型限制
from enum import Enum from enum import IntEnum, unique @unique class VIP(IntEnum): YELLOW = 1 GREEN = 1 BLACK = 3 RED = 4 >>> Traceback (most recent call last): File "2.py", line 5, in <module> class VIP(IntEnum): File "/Users/rxu/.pyenv/versions/3.5.3/lib/python3.5/enum.py", line 573, in unique (enumeration, alias_details)) ValueError: duplicate values found in <enum 'VIP'>: GREEN -> YELLOW