枚举
大约 1 分钟
from enum import Enum
from enum import IntEnum, unique
# python中所有的枚举都继承自Enum
class Color1(Enum):
RED = 1
GREEN = 1 # 如果value相同,则后面的name变成了第一个name的别名
BLUE = '2'
# 强制要求value必须是数字类型,且强制要求value不能相同
@unique
class Color2(IntEnum):
RED = 1
GREEN = 2
BLUE = 3
# 这两行本该打印GREEN,却打印出来了RED,这是因为它们value相同造成的
print(Color1.GREEN)
print(Color1['GREEN'])
print(Color1.RED == Color1['RED'])
print(Color1.RED.name)
print(Color1.RED.value)
print("type(Color.GREEN) ==>", type(Color1.GREEN))
print("type(Color['GREEN']) ==>", type(Color1['GREEN']))
print("type(Color.GREEN.name) ==>", type(Color1.GREEN.name))
print("type(Color.GREEN.value) ==>", type(Color1.GREEN.value))
# 枚举之间的比较
print("Color1.RED == Color1.GREEN ==>", Color1.RED == Color1.GREEN)
print("Color1.RED == Color2.RED ==>", Color1.RED == Color2.RED)
print("Color1.RED.name == 'RED' ==>", Color1.RED.name == 'RED')
print("Color1.RED.name == 'red' ==>", Color1.RED.name == 'red')
print("Color1.RED.value == 1 ==>", Color1.RED.value == 1)
print("Color1.RED.value < Color1.GREEN.value ==>", Color1.RED.value < Color1.GREEN.value)
print("Color1.RED is Color1.GREEN ==>", Color1.RED is Color1.GREEN)
# 枚举运算
print(Color1.RED.name + Color1.GREEN.name)
print(Color1.RED.value + Color1.GREEN.value)
print(Color1.RED.name + str(Color1.GREEN.value))
# 枚举遍历
for color in Color1:
# 只会打印出value不同的name,而不会打印出别名
print(color)
for color in Color1.__members__.items():
# 通过 __members__.items()(或者__members__) 就可以打印出所有的name,包括别名
print(color)
# 枚举转换
a = 1
print("Color1(a) ==>", Color1(a).name)
b = '2'
print("Color1(b) ==>", Color1(b).name)
# 枚举不需要实例化,这样操作会报错
# color2 = Color2()
# 这样才行
color2 = Color2.RED
print("color2.name ==>", color2.name)
感谢支持
更多内容,请移步《超级个体》。