美文网首页
Python与枚举

Python与枚举

作者: skullfang | 来源:发表于2018-01-08 16:07 被阅读0次

    前言

    枚举是一个常见的数据类型。在Python中枚举却不是一个类型,而是一个类。简单粗暴!

    使用

    from enum import Enum
    class VIP(Enum):
        YELLOW = 2
        GREEN = 2
        BLACK = 4
        RED = 5
    
    print(type(VIP))
    print(type(VIP.GREEN))
    

    结果

    <class 'enum.EnumMeta'>
    <enum 'VIP'>
    

    很简单,很粗暴。但是枚举看起来跟字典有点像,为啥不用字典呢。因为这里的枚举一旦做好了之后就不能动态的去修改。而字典是可以动态的去修改的。枚举一半作为数据映射有自己独特的特点。

    而且枚举的标签是唯一的!不能出现相同的标签。

    标签唯一但是数值不唯一。如果数值不唯一,相当于起别名。
    我们的普通遍历是直接去掉别名的。
    例如:

    from enum import Enum
    class VIP(Enum):
        GREEN = 2
        GREEN_ALIAS = 2
        BLACK = 4
        RED = 5
    
    for v in VIP:
        print(v)
    
    VIP.GREEN
    VIP.BLACK
    VIP.RED
    

    如果你想获取到、必须这样遍历到。

    for v in VIP.__members__:
        print(v)
    

    如果你想数值也唯一!要使用unique注解。这里如果不一样就会报错。

    from enum import Enum,unique
    @unique
    class VIP(Enum):
        GREEN = 1
        GREEN_ALIAS = 2
        BLACK = 4
        RED = 5
    

    相关文章

      网友评论

          本文标题:Python与枚举

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