美文网首页
Python学习笔记九(枚举)

Python学习笔记九(枚举)

作者: stoolman | 来源:发表于2018-03-07 15:13 被阅读34次

    枚举

    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学习笔记九(枚举)

          本文链接:https://www.haomeiwen.com/subject/shbhfftx.html