Python入门学习(九)Python的高级语法与用法(一)枚举
枚举一般包含一组有所关联的成员,每个成员被指定一个整型数字;可以定义枚举类型中的成员,分别代表一组相关却有不同含义的内容。
一般成员定义会依次为0\1\2...当然也不是完全必须遵循这个规则。
from enum import Enum #枚举本身也是一个类 class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW)
""" yellow = 1 green = 2 dic = {"yellow" : 1, "green" : 2} class TypeDiamond(): yellow = 1 green = 2 """ #如用上述三种方法定义类型,无法控制其可变,而枚举是不能被轻易更改的 #而且没有防止相同标签的功能 from enum import Enum #枚举本身也是一个类 class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW) #下面代码这里会保护内容不被更改,会报错 #VIP.YELLOW = 6
from enum import Enum #枚举本身也是一个类 class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 #获取类型的数值 print(VIP.BLACK.value) #获取枚举类型名 print(VIP.GREEN.name) print(type(VIP.GREEN.name)) #是一个字符串 print(VIP.GREEN) #获取枚举类型 print(type(VIP.GREEN)) #是一个枚举类 print(VIP['GREEN']) #获取枚举类型的另一个方法 #枚举也是可以遍历的 for v in VIP: print(v)
#枚举之间的比较
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 PINK = 1 #枚举类型的比较 result = VIP.YELLOW== VIP.GREEN print(result) result = VIP.YELLOW== 1 print(result) result = VIP.YELLOW.value== 1 print(result) #但不能直接做大小比较,会报错 #result = VIP.YELLOW> VIP.GREEN #需要用枚举类型的值才可以比大小 result = VIP.YELLOW.value == VIP.PINK.value print(result) class VIP1(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 PINK = 1 #实际与YELLOW是一类,可以看为其别名 #枚举类之间的比较 #显然不等 result = VIP==VIP1 print(result) #显然不等 result = VIP.YELLOW==VIP1.YELLOW print(result) #TRUE result = VIP.YELLOW.value ==VIP1.YELLOW.value print(result)
#别名与遍历
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 PINK = 1 for v in VIP: print(v) #不会输出PINK这种别名的枚举类型 print(v.value) #如果需要把别名遍历出来 for v in VIP.__members__: print(v)
浙公网安备 33010602011771号