python枚举之Enum模块详解

    科技2025-10-31  6

    简介:

    当我们需要定义一些特定有限数量的常量、标签、类型等的时候,最佳方式就是使用枚举。枚举一般用于表示某些特定的有限集合。例如月份、季节、星期等。

    本篇主要介绍python2.7中的枚举类。即enum中的Enum类。python3.4开始有内置枚举类,在python2.7中需要指定enum34安装。

    enum中有Enum和IntEnum两个枚举class。IntEnum的最大特性就是指定枚举值只能是int类型。

    安装:
    pip install enum34 # 注意这里是enum34,会安装和python3.4中相同的枚举类 # 如果直接执行pip install enum,会安装另外一个enum模块,也支持枚举,但是功能较少。
    用法 定义:
    # *******************************定义 from enum import Enum, unique # 这行unique装饰器可以让枚举类中不能有重复值 # @unique class ColorEnum(Enum): RED = "red" GREEN = "green" BLUE = "blue" # PINK = "red" # 这里如果加上了unique装饰器,运行时会报错duplicate names # 没加装饰器,可以设置相同属性。但是PINK会被当作RED的别名,即 ColorEnum.PINK
    取值
    # ********************************* 取值 print ColorEnum.RED # 输出 ColorEnum.RED, 注意这里无法输出值 print ColoeEnum.RED.value # 输出 “red” value表示枚举的值 print ColorEnum.RED.names # 输出 RED name表示输出枚举变量
    使用
    # 一般用于表示特定有限集合值,常量集合,避免多处定义,避免重复值
    内置属性
    print ColorEnum._member_names_ # 输出 ['Monday', 'TuesDay', 'WednesDay'] 即全部枚举变量的列表 print ColorEnum._value2member_map_ # 输出 {1: <EnumWeek.Monday: 1>, 2: <EnumWeek.TuesDay: 2>, 3: <EnumWeek.WednesDay: 3>} # 这是一个字典,字典键是枚举值,值是枚举变量 # 通过这两个内置属性可以轻易获取全部枚举值和变量 print ColorEnum.__members__.items() # 得到全部枚举值
    遍历
    # 遍历 for v in ColorEnum: print v.name print v.value
    比较
    print ColorEnum.RED == ColorEnum.GREEN # 输出false 比较运算,可以比较枚举值是否相等 print ColorEnum.RED is EnumColor.PINK # PINK未注释时,输出True, 比较枚举值是否是同一个 # 不支持大小比较
    特性:
    可以遍历可以用 == 或者 is 比较获取全部枚举变量 参照上边语法获取全部枚举变量和值。参照上面语法装饰器unique可以决定是否能有重复值。(实际上重复枚举值无意义,后面重复值是前面枚举变量的别名,引用时只会指向第一个)
    Processed: 0.013, SQL: 8