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)

 

posted @ 2025-08-08 19:30  tsembrace  阅读(9)  评论(0)    收藏  举报