枚举注意事项
枚举名不能重复
from enum import Enum
class VIP(Enum):
YELLOW = 1
YELLOW = 5
RED = 2
BLACK = 3
PURPLE = 4
raise TypeError('Attempted to reuse key: %r' % key)
TypeError: Attempted to reuse key: 'YELLOW'
枚举值可以重复
下面的GREEN会演化成YELLOW的别名
from enum import Enum
class VIP(Enum):
YELLOW = 1
GREEN = 1
RED = 2
BLACK = 3
PURPLE = 4
print(VIP.GREEN) # VIP.YELLOW
当值相同时,把GREEN当成了YELLOW的别名
from enum import Enum
class VIP(Enum):
YELLOW = 1
YELLOW_ALIAS = 1
RED = 2
BLACK = 3
PURPLE = 4
print(VIP.YELLOW_ALIAS) # VIP.YELLOW
遍历枚举
from enum import Enum
class VIP(Enum):
YELLOW = 1
YELLOW_ALIAS = 1
RED = 2
BLACK = 3
PURPLE = 4
for v in VIP:
print(v)
VIP.YELLOW
VIP.RED
VIP.BLACK
VIP.PURPLE
可以看到,别名是不会被打印出来的,那如何打印出别名呢?
from enum import Enum
class VIP(Enum):
YELLOW = 1
YELLOW_ALIAS = 1
RED = 2
BLACK = 3
PURPLE = 4
for v in VIP.__members__.items():
print(v)
('YELLOW', <VIP.YELLOW: 1>)
('YELLOW_ALIAS', <VIP.YELLOW: 1>)
('RED', <VIP.RED: 2>)
('BLACK', <VIP.BLACK: 3>)
('PURPLE', <VIP.PURPLE: 4>)
from enum import Enum
class VIP(Enum):
YELLOW = 1
YELLOW_ALIAS = 1
RED = 2
BLACK = 3
PURPLE = 4
for v in VIP.__members__:
print(v)
YELLOW
YELLOW_ALIAS
RED
BLACK
PURPLE