全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python枚举类型使用详解_enum模块应用示例【指导】

Python 的 enum 模块提供安全、可读、类型友好的具名常量定义方式;相比普通变量,Enum 防止重复赋值、拼写错误和越界取值,支持迭代、比较、序列化及 IDE 补全。

Python 的 enum 模块提供了一种定义具名常量集合的规范方式,比用普通变量或字典更安全、可读性更强,也支持迭代、比较和序列化等操作。

为什么要用 Enum 而不是普通变量?

直接用字符串或数字定义状态(如 STATUS_ACTIVE = 1)容易出错:可能重复赋值、拼写错误、无法限制取值范围。Enum 强制所有合法值必须显式声明,且每个成员是唯一的对象实例,天然支持类型检查和 IDE 自动补全。

  • 成员不可变,不能被重新赋值
  • 不同枚举类的同名成员不会冲突(Color.REDState.RED 是独立的)
  • 支持 is 判断、== 比较、in 成员检测

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

继承 Enum 类即可创建枚举类。每个属性是一个枚举成员,自动获得唯一序号(从 1 开始),也可显式赋值。

from enum import Enum

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

访问方式

print(Color.RED) # Color.RED print(Color.RED.name) # 'RED' print(Color.RED.value) # 1 print(Color.RED.value == 1) # True print(Color(2)) # Color.GREEN(按 value 查找) print(Color['BLUE']) # Color.BLUE(按 name 查找)

常用枚举变体:IntEnum、StrEnum、auto()

IntEnum 允许与整数直接比较;StrEnum(Python 3.11+)让成员值默认为字符串且支持字符串比较;auto() 自动递增赋值,避免手动编号出错。

from enum import IntEnum, StrEnum, auto

class Priority(IntEnum): LOW = 10 MEDIUM = 20 HIGH = 30

print(Priority.HIGH > Priority.LOW) # True(IntEnum 支持数值比较)

class Status(StrEnum): PENDING = auto() # 自动设为 'PENDING' DONE = auto() # 自动设为 'DONE'

print(Status.PENDING == "PENDING") # True

实用技巧:遍历、验证和 JSON 序列化

枚举类本身可迭代,适合用于下拉选项或状态校验;转 JSON 需自定义编码器,通常推荐存 namevalue 字段。

  • 遍历所有成员:list(Color)for c in Color:
  • 检查是否为有效成员:value in Color.__members__.values() 或用 try/except 捕获 ValueError
  • JSON 序列化示例:
    import json
    class Encoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, Enum):
                return obj.name  # 或 obj.value
            return super().default(obj)
    

    json.dumps({'color': Color.RED}, cls=Encoder) # '{"color": "RED"}'


# python  # js  # json  # 编码  # 为什么  # red 


相关文章: 如何在阿里云部署织梦网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何高效配置IIS服务器搭建网站?  PHP 500报错的快速解决方法  如何在万网自助建站中设置域名及备案?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何用PHP快速搭建高效网站?分步指南  外贸公司网站制作哪家好,maersk船公司官网?  XML的“混合内容”是什么 怎么用DTD或XSD定义  韩国服务器如何优化跨境访问实现高效连接?  宝塔Windows建站如何避免显示默认IIS页面?  网站专业制作公司有哪些,做一个公司网站要多少钱?  如何在搬瓦工VPS快速搭建网站?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何在企业微信快速生成手机电脑官网?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  智能起名网站制作软件有哪些,制作logo的软件?  网站制作免费,什么网站能看正片电影?  MySQL查询结果复制到新表的方法(更新、插入)  焦点电影公司作品,电影焦点结局是什么?  如何用wdcp快速搭建高效网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  已有域名和空间如何搭建网站?  如何用腾讯建站主机快速创建免费网站?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何在建站宝盒中设置产品搜索功能?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在云主机上快速搭建多站点网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  购物网站制作公司有哪些,哪个购物网站比较好?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  c# 在ASP.NET Core中管理和取消后台任务  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  网站制作服务平台,有什么网站可以发布本地服务信息?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站主机选虚拟主机还是云服务器更好?  如何选择最佳自助建站系统?快速指南解析优劣  已有域名和空间如何快速搭建网站?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  济南网站制作的价格,历城一职专官方网站?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星如何实现网站加密操作?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  php json中文编码为null的解决办法  Python如何创建带属性的XML节点  如何通过网站建站时间优化SEO与用户体验? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。