创建方式

继承 Enum 类

直接继承 Enum

1
2
3
4
5
6
7
8
9
from enum import Enum, auto

class Color(Enum):
    green = 1
    red = 2

class Color2(Enum):
    green = auto()
    red = auto()

继承其他类

正确方法

1
2
3
class Color(str, Enum):
    green = 'green'
    red = 'red'

错误方法

1
2
3
class Color(Enum, str):
    green = 'green'
    red = 'red'

原因分析:

  • Enum 直接的继承方式:

    1
    2
    
    class EnumName([mix-in, ...,] [data-type,] base-enum):
        pass
    • 注意: 这里,最后一个才是基类 enum.Enum 或它的子类作为基类

使用 Enum 类的函数 api (functional api)

参考: enum — functional-api — Python 3.10.5 documentation

方法:

  • 空格或这逗号风格的字符串

    1
    2
    3
    4
    
    Animal = Enum('Animal', 'ANT BEE CAT DOG')
    
    #valid format
    'RED GREEN BLUE' | 'RED,GREEN,BLUE' | 'RED, GREEN, BLUE'
  • List[Tuple[name, value]]

    1
    
    [('CYAN', 4), ('MAGENTA', 5), ('YELLOW', 6)]
  • Dict[name, value]

    1
    
    {'CHARTREUSE': 7, 'SEA_GREEN': 11, 'ROSEMARY': 42}

数据访问

  • 枚举元素

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    >>> from enum import Enum
    >>> class Color(Enum):
    ...     RED = 1
    ...     GREEN = 2
    ...     BLUE = 3
    ...
    
    Color.RED
    Color['RED']
  • 元素的名称

    1
    
    Color.RED.name
  • 元素的值

    1
    
    Color.RED.value