from enum import Enum class Color(Enum): # 为序列值指定value值 red = 1 green = 2 blue = 3如果想将一个类定义为枚举类,只需要令其继承自 enum 模块中的 Enum 类即可。例如在上面程序中,Color 类继承自 Enum 类,则证明这是一个枚举类。
#调用枚举成员的 3 种方式 print(Color.red) print(Color['red']) print(Color(1)) #调取枚举成员中的 value 和 name print(Color.red.value) print(Color.red.name) #遍历枚举类中所有成员的 2 种方式 for color in Color: print(color)程序输出结果为:
Color.red
Color.red
Color.red
1
red
Color.red
Color.green
Color.blue
print(Color.red == Color.green) print(Color.red.name is Color.green.name)输出结果为:
Flase
Flase
Color.red = 4
for name,member in Color.__members__.items(): print(name,"->",member)输出结果为:
red -> Color.red
green -> Color.green
blue -> Color.blue
from enum import Enum class Color(Enum): # 为序列值指定value值 red = 1 green = 1 blue = 3 print(Color['green'])输出结果为:
Color.red
可以看到,Color 枚举类中 red 和 green 具有相同的值(都是 1),Python 允许这种情况的发生,它会将 green 当做是 red 的别名,因此当访问 green 成员时,最终输出的是 red。#引入 unique from enum import Enum,unique #添加 unique 装饰器 @unique class Color(Enum): # 为序列值指定value值 red = 1 green = 1 blue = 3 print(Color['green'])运行程序会报错:
Traceback (most recent call last):
File "D:\python3.6\demo.py", line 3, in <module>
class Color(Enum):
File "D:\python3.6\lib\enum.py", line 834, in unique
(enumeration, alias_details))
ValueError: duplicate values found in <enum 'Color'>: green -> red
from enum import Enum #创建一个枚举类 Color = Enum("Color",('red','green','blue')) #调用枚举成员的 3 种方式 print(Color.red) print(Color['red']) print(Color(1)) #调取枚举成员中的 value 和 name print(Color.red.value) print(Color.red.name) #遍历枚举类中所有成员的 2 种方式 for color in Color: print(color)Enum() 函数可接受 2 个参数,第一个用于指定枚举类的类名,第二个参数用于指定枚举类中的多个成员。
Color.red
Color.red
Color.red
1
red
Color.red
Color.green
Color.blue
本文链接:http://task.lmcjl.com/news/9717.html