枚举其实是一个类
1、定义一个枚举类,下面我们举一个例子
# 定义枚举类,继承于enum
from enum import Enum
class VIP(Enum):
# 枚举里面的标识最好用大写
YELLO = 1
GREEN = 1
BLACK = 3
RED = 4
print(VIP.BLACK)
# 注:枚举的意义重在于的是标签,而不是属性值
结果
VIP.BLACK
2、枚举类型、枚举名称于枚举值
# 枚举类型、枚举名称与枚举值
from enum import Enum
class VIP(Enum):
YELLO = 1
GREEN = 2
BLACK = 3
RED = 4
print(VIP.YELLO)
print(VIP.YELLO.name) #获取标签名称
print(VIP.YELLO.value) #获取标签值
print(type(VIP.YELLO)) #这个类型是枚举类
print(type(VIP.YELLO.name)) #这个是一个字符串
print("#" * 50)
# 枚举也是可以遍历的
for v in VIP:
print(v)
print(v.name)
print(v.value)
print("*" * 50)
结果
VIP.YELLO
YELLO
1
<enum 'VIP'>
<class 'str'>
##################################################
VIP.YELLO
YELLO
1
**************************************************
VIP.GREEN
GREEN
2
**************************************************
VIP.BLACK
BLACK
3
**************************************************
VIP.RED
RED
4
**************************************************
3、枚举之间的比较运算
from enum import Enum
class VIP(Enum):
YELLO = 1
GREEN = 2
BLACK = 3
RED = 4
class VIP1(Enum):
YELLO = 1
GREEN = 2
BLACK = 3
RED = 4
restul = VIP.YELLO == VIP.GREEN #False
restul1 = VIP.YELLO == VIP.YELLO #True
restul2 = VIP.YELLO == 1 #False
restul3 = VIP.YELLO.value == 1 #True
restul4 = VIP.YELLO is VIP.YELLO #True
print("*" * 50)
restul5 = VIP.YELLO == VIP1.YELLO #False
restul6 = VIP.YELLO.value == VIP1.YELLO.value #True
print(restul6)
4、枚举注意事项
- 枚举不能有相同的标识,但是标签的值是可以相同的。
在枚举类中,标签值相同时,那么第二个标签将会成为别名。
在遍历的时候,打印标签的时候,是不会将别名打印出来。 要想将别名标签打印出来,则在遍历时,在枚举类名后面加members
from enum import Enum
class VIP(Enum):
YELLO = 1
# 别名
YELLO_ALIAS = 1
BLACK = 3
RED = 4
for v in VIP.__members__:
print(v)
结果
YELLO
YELLO_ALIAS
BLACK
RED