Python学习笔记九(枚举)

枚举

from enum import Enum

class VIP(Enum):
    YELLOW = 1
    GREEN = 2
    BLACK =3
    reversed = 4

print(VIP.YELLOW)

python 3中新增

相比字典以及类变量,枚举用来抽象类型具有优势有1、值不可变;2、防止相同值

获取枚举类型属性及值

#枚举的类型,枚举的名字,枚举的值,类型不同,可以通过type()查看
print(VIP.YELLOW.value)
print(VIP.YELLOW.name)
print(VIP.YELLOW.value)

#枚举遍历
for v in VIP:
    print(v)

枚举之间的比较

可以进行身份比较或等值比较,不能进行大小比较

#等值比较
result = VIP.YELLOW == VIP.YELLOW
#身份比较
a = VIP.BLACK
r = a is VIP.BLACK
print(r)

注意事项:

from enum import Enum

class VIP(Enum):
    YELLOW = 1
    YELLOW_ALIAs = 1
    GREEN = 2
    BLACK =3
    reversed = 4

for v in VIP.__members__:
    print(v)

for v in VIP.__members__.items():
    print(v)

枚举类型,value可以相同,相同的值的name为别名

遍历的时候,直接遍历不会遍历别名

通过value访问枚举

a = 1
print(VIP(a))

小结

可以通过继承IntEnum来限制value为int

unique装饰器可以显示别名,即不允许value相等

from enum import IntEnum,unique
@unique
class VIP(IntEnum)
    YELLOW = 1

枚举没有实例化意义,单例模式(设计模式)

你可能感兴趣的:(Python学习笔记九(枚举))