枚举注意事项

枚举名不能重复

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

results matching ""

    No results matching ""