Python枚举(Enum)用于定义命名常量,提升可读性与维护性;自3.4起内置enum模块,提供Enum、IntEnum、Flag等类;支持name/value属性、auto()自动赋值、类型安全比较及位运算。

Python 中的枚举(Enum)用于定义一组命名的常量,避免魔法数字或字符串带来的可读性与维护性问题。enum 模块自 Python 3.4 起成为标准库,提供了 Enum、IntEnum、Flag 等实用类,用法简洁且类型安全。
最常用的是 Enum 类,每个成员是唯一的、不可变的对象,有名字(name)和值(value)两个属性。
示例:
from enum import Enum <p>class Color(Enum): RED = 1 GREEN = 2 BLUE = 3
访问方式:
立即学习“Python免费学习笔记(深入)”;
Color.RED → 枚举成员对象(Color.RED)Color.RED.name → 字符串 'RED'
Color.RED.value → 数值 1
Color.RED.name 和 Color.RED.value 都不可修改当只关心顺序、不关心具体数值时,可用 auto() 自动赋值(从 1 开始递增)。
from enum import Enum, auto <p>class Status(Enum): PENDING = auto() RUNNING = auto() DONE = auto() FAILED = auto()</p><h1>Status.PENDING.value → 1,Status.RUNNING.value → 2,以此类推</h1><p>
注意:auto() 不支持混合手动赋值(如 PENDING = 0 后接 RUNNING = auto()),除非导入 _generate_next_value_ 自定义逻辑。
IntEnum 是 int 的子类,可直接与整数比较或参与算术运算;Flag 支持位运算,适合表示多选状态。
IntEnum 示例:from enum import IntEnum <p>class Priority(IntEnum): LOW = 1 MEDIUM = 5 HIGH = 10</p><p>print(Priority.HIGH > Priority.LOW) # True(因为它是 int)
Flag 示例(权限组合):from enum import Flag, auto <p>class Permission(Flag): READ = auto() WRITE = auto() EXECUTE = auto()</p><h1>组合权限</h1><p>user_perm = Permission.READ | Permission.WRITE print(Permission.READ in user_perm) # True
实际开发中,注意以下几点可提升健壮性和可读性:
@unique 装饰器Color['RED'] 或 Color(1) 反向查找成员(但需确保输入合法,否则抛异常)Color.RED 转为 "RED" 或 1)不复杂但容易忽略。
以上就是Python枚举类型如何定义_enum模块实战讲解【指导】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号