Python枚举类型使用_enum模块讲解

3次阅读

python 枚举通过 enum 模块实现,用于定义命名常量以提升可读性、避免魔法值;支持 enum、intenum、strenum 及 auto() 自增;成员不可变,value 相同视为别名(可用 @unique 校验)。

Python枚举类型使用_enum模块讲解

Python 中的枚举类型通过 enum 模块(注意是 enum,不是 _enum)实现,这是标准库中正式、稳定且推荐的方式。_enum 是内部模块,不对外公开,不应直接导入或使用。

为什么要用 enum 模块?

枚举用于定义一组命名的常量,能提升代码可读性、避免魔法数字/字符串,并支持类型检查和 ide 自动补全。比如用 Color.RED 代替硬编码的 "red"1,语义清晰,不易出错。

基础用法:定义和访问枚举成员

继承 Enum 类即可创建枚举:

示例:

立即学习Python免费学习笔记(深入)”;

from enum import Enum <p>class Status(Enum): PENDING = 1 RUNNING = 2 DONE = 3 FAILED = 4

访问方式有多种:

  • Status.PENDING —— 获取枚举成员对象(类型为 Status
  • Status.PENDING.name"PENDING"(字符串名)
  • Status.PENDING.value1(绑定的值)
  • Status.PENDING.label → 报错,除非手动添加属性

常用枚举变体与技巧

IntEnum:继承自 int,可直接与整数比较:

from enum import IntEnum class Priority(IntEnum):     LOW = 1     MEDIUM = 2     HIGH = 3 <p>print(Priority.HIGH > Priority.LOW)  # True(普通 Enum 不支持)

StrEnum(Python 3.11+):继承自 str,自动支持字符串操作:

from enum import StrEnum class FileType(StrEnum):     json = "application/json"     XML = "application/xml" <p>print(FileType.JSON.startswith("application/"))  # True

自动赋值:用 auto() 让值自增(需导入):

from enum import Enum, auto class Direction(Enum):     UP = auto()   # 1     DOWN = auto() # 2     LEFT = auto() # 3

实用注意事项

  • 枚举成员不可变,不能重新赋值(Status.PENDING = 99 会报错)
  • 相同 value 的成员会被视为别名(除非加 @unique 装饰器校验唯一性)
  • 可用 list(Status) 遍历所有成员;Status(2) 可按 value 查找成员
  • JSON 序列化需自定义 encoder,因默认不支持枚举

text=ZqhQzanResources