zoukankan      html  css  js  c++  java
  • python3 枚举enum定义和使用

    两种方式定义枚举类:

    1、直接使用Enum列出多个枚举值来创建枚举类。

    2、通过集成Enum基类派生枚举类。

    程序示范:

    1、直接使用Enum列出多个枚举值来创建枚举类。

    from enum import Enum
    #定义Month枚举类
    Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

    上面的代码使用Enum()函数来创建枚举类,该方法第一个参数:枚举类的类名;第二个参数:元组,用于列出所有枚举值。

    通过枚举值访问每个枚举元素,每个元素都有name,value两个属性,其中name属性值为该枚举值的变量名,value代表该枚举值的序号(序号通常从1开始)。

    # 遍历Month所有成员
    for member in Month:
        print(member.name,  member.value)
    
    # 直接使用枚举
    print(Month.Jan)       # Month.Jan
    print(Month.Jan.name)  # Jan
    print(Month.Jan.value) # 1
    
    # 通过枚举变量名或枚举值来访问指定枚举对象
    print(Month['Jan'])    # Month.Jan
    print(Month(1))        # Month.Jan

    此外 python 还为枚举提供了一个__members__属性,该属性返回一个dict字典,字典包含了该枚举的所有枚举实例。

    # 遍历Month枚举的所有成员
    for name, member in Month.__members__.items():
        print(name, '=>', member, ',', member.value)

    输出:
    Jan => Month.Jan , 1
    ...

    2、通过继承 Enum 来派生枚举类,定义复杂的枚举

    from enum import Enum, unique
    
    @unique
    class Weekday(Enum):
        Sun = 0 # Sun的value被设定为0
        Mon = 1
        Tue = 2
        Wed = 3
        Thu = 4
        Fri = 5
        Sat = 6

    @unique装饰器可以帮助我们检查保证没有重复值。

    若是不加@unique装饰器,枚举成员名允许重复。

    访问这些枚举类型可以有若干种方法:

    print(Weekday.Tue)       # Weekday.Tue
    print(Weekday['Tue'])    # Weekday.Tue
    print(Weekday.Tue.value) # 2
    print(Weekday(1))        # Weekday.Mon
  • 相关阅读:
    P4549 【模板】裴蜀定理
    POJ1606 Jugs
    2. 数据库连接池规范
    14. BootStrap * 组件
    BootStarpt
    13. Flex 弹性布局2 BootStrap
    12. Flex 弹性布局 BootStrap
    CSS3
    21. Servlet3.0 / 3.1 文件上传 Plus
    20. Servlet3.0 新特性
  • 原文地址:https://www.cnblogs.com/AndyChen2015/p/11389950.html
Copyright © 2011-2022 走看看