枚举特性

  • 枚举可迭代
  • 枚举可哈希
  • 枚举不支持同名成员
  • 允许枚举成员有相同的值
  • unique装饰器可确保唯一的枚举值
  • 枚举成员为单例,不可示例化,不可更改

    示例

    ```python from enum import Enum, IntEnum, unique

class Color(Enum): RED = 1 GREEN = 2 BLUE = 3

枚举属性

print(Color.RED.name) # RED print(Color.RED.value) # 1

枚举可迭代

for i in Color: print(i)

Color.RED

Color.GREEN

Color.BLUE

for name, menber in Color.members.items(): print(name, menber)

RED Color.RED

GREEN Color.GREEN

BLUE Color.BLUE

枚举可哈希

a = {} for i in Color: a[i.name] = i.value print(a)

{‘RED’: 1, ‘GREEN’: 2, ‘BLUE’: 3}

可访问

print(Color(1)) # Color.RED

枚举不支持同名成员

class Shape(Enum): TEST = 1

  1. # TEST = 1

允许枚举成员有相同的值

class Shape(Enum):

  1. # DIAMOND将作为SQUARE的别名
  2. SQUARE = 1
  3. DIAMOND = 1

print(Shape.SQUARE) print(Shape.DIAMOND)

Shape.SQUARE

Shape.SQUARE

unique装饰器可确保唯一的枚举值

@unique class Shape(Enum): SQUARE = 1 DIAMOND = 12

IntEnum 是Enum变种也是 int的子类

class Request(IntEnum): SQUARE = 1 DIAMOND = 12

print(Shape.SQUARE == 1) # False print(Shape.SQUARE.value == 1) # True print(Request.SQUARE == 1) # True ```