如何灵活运用Python枚举类来实现设计状态码信息
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,如何灵活运用Python枚举类来实现设计状态码信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在 web 项目中,我们经常使用自定义状
千家信息网最后更新 2026年11月03日如何灵活运用Python枚举类来实现设计状态码信息
如何灵活运用Python枚举类来实现设计状态码信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在 web 项目中,我们经常使用自定义状态码来告知请求方请求结果以及请求状态;在 Python 中该如何设计自定义的状态码信息呢?
普通类加字典设计状态码
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Author: Hui# @Desc: { 项目响应码模块 }# @Date: 2021/09/22 23:37class RETCODE: OK = "0" ERROR = "-1" IMAGECODEERR = "4001" THROTTLINGERR = "4002" NECESSARYPARAMERR = "4003" err_msg = { RETCODE.OK : "成功", RETCODE.IMAGECODEERR : "图形验证码错误", RETCODE.THROTTLINGERR : "访问过于频繁", RETCODE.NECESSARYPARAMERR : "缺少必传参数",}单独利用一个字典进行状态码信息对照,这样设计一旦状态码多了就不好对照,再使用过程中也没那么方便,简单试下组织一个成功的信息
data = { 'code': RETCODE.OK, 'errmsg': err_msg[RETCODE.OK]}巧用枚举类设计状态码信息
利用枚举类就可以巧妙的设计状态码信息
枚举类的定义
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Author: Hui# @Desc: { 项目枚举类模块 }# @Date: 2021/09/23 23:37from enum import Enumclass StatusCodeEnum(Enum): """状态码枚举类""" OK = (0, '成功') ERROR = (-1, '错误') SERVER_ERR = (500, '服务器异常')普通的类继承 enum 模块中的 Enum 类就变成了枚举类。
枚举类的使用
在 ipython 中测试使用下
In [21]: ok = StatusCodeEnum.OKIn [22]: type(ok)Out[22]:In [23]: error = StatusCodeEnum.ERRORIn [24]: type(error)Out[24]: In [26]: ok.nameOut[26]: 'OK'In [27]: ok.valueOut[27]: (0, '成功')In [28]: error.nameOut[28]: 'ERROR'In [29]: error.valueOut[29]: (-1, '错误')
枚举类中的每一个属性都返回一个枚举对象,其中枚举对象有两个重要的属性 name, value
name 枚举对象在枚举类中的属性名
value 则是枚举对象在枚举类中对应属性名的值
# StatusCodeEnum.OK -># name value# 'OK' (200, '成功')# StatusCodeEnum.ERROR -># name value# 'ERROR' (-1, '错误')
用枚举类组组织一个成功的响应信息
code = StatusCodeEnum.OK.value[0]errmsg = StatusCodeEnum.OK.value[1]data = { 'code': code, 'errmsg': errmsg}咋一看虽然状态码信息一一对照了,也很简洁,但使用起来还是有点麻烦,还有一点就是
StatusCodeEnum.OK.value[0] 这样的语法不能立马见名知义。因此还需对枚举类进行封装
封装枚举类
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Author: Hui# @Desc: { 项目枚举类模块 }# @Date: 2021/09/23 23:37from enum import Enumclass StatusCodeEnum(Enum): """状态码枚举类""" OK = (0, '成功') ERROR = (-1, '错误') SERVER_ERR = (500, '服务器异常') @property def code(self): """获取状态码""" return self.value[0] @property def errmsg(self): """获取状态码信息""" return self.value[1]通过 @property 装饰器把类型的方法当属性使用,由于 枚举类.属性名 对应着不同的枚举对象就很好的把状态码和信息进行了封装。看看外部调用的结果
In [32]: StatusCodeEnum.OK.codeOut[32]: 0In [33]: StatusCodeEnum.OK.errmsgOut[33]: '成功'In [34]: StatusCodeEnum.ERROR.codeOut[34]: -1In [35]: StatusCodeEnum.ERROR.errmsgOut[35]: '错误'
具体 @property 装饰器的使用详解,可以移步到 Python中property的使用技巧
继续模拟组织响应数据
data = { 'code': StatusCodeEnum.OK.code, 'errmsg': StatusCodeEnum.OK.errmsg}这下终于可以接受了。
状态码信息枚举类
分享一波我平时用的状态码信息枚举类,供大家参考参考。
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Author: Hui# @Desc: { 项目枚举类模块 }# @Date: 2021/09/23 23:37from enum import Enumclass StatusCodeEnum(Enum): """状态码枚举类""" OK = (0, '成功') ERROR = (-1, '错误') SERVER_ERR = (500, '服务器异常') IMAGE_CODE_ERR = (4001, '图形验证码错误') THROTTLING_ERR = (4002, '访问过于频繁') NECESSARY_PARAM_ERR = (4003, '缺少必传参数') USER_ERR = (4004, '用户名错误') PWD_ERR = (4005, '密码错误') CPWD_ERR = (4006, '密码不一致') MOBILE_ERR = (4007, '手机号错误') SMS_CODE_ERR = (4008, '短信验证码有误') ALLOW_ERR = (4009, '未勾选协议') SESSION_ERR = (4010, '用户未登录') DB_ERR = (5000, '数据错误') EMAIL_ERR = (5001, '邮箱错误') TEL_ERR = (5002, '固定电话错误') NODATA_ERR = (5003, '无数据') NEW_PWD_ERR = (5004, '新密码错误') OPENID_ERR = (5005, '无效的openid') PARAM_ERR = (5006, '参数错误') STOCK_ERR = (5007, '库存不足') @property def code(self): """获取状态码""" return self.value[0] @property def errmsg(self): """获取状态码信息""" return self.value[1]看完上述内容,你们掌握如何灵活运用Python枚举类来实现设计状态码信息的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
状态
错误
信息
成功
设计
属性
对象
模块
项目
utf-8
参数
数据
方法
服务器
封装
服务
验证
普通
频繁
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网政务服务
互联网科技会
奔汉互联网科技
猫创互联网科技
卓越科技互联网 招聘
玖二柒互联网科技公司待遇
北京华百购互联网科技有限公司
河南猎农互联网科技有限公司
互联网科技商业
工业互联网等科技实现智能化赋能
四川互联网展示科技馆设计
互联网相关科技技术
扫呗互联网科技有限公司
万物互联网智能科技
银川新华互联网科技学校是国营吗
悟空问答互联网科技
安徽九吞吴互联网科技有限公司
互联网科技创业计划的风险分析
互联网高科技绘画
株洲百竞科技的互联网营销顾问
互联网佳科技有限公司
互联网科技与金融科技
狮子座互联网科技
互联网科技小贷
互联网科技的未来发展
佩信高科技互联网
科技赋能互联网健康
互联网科技教育视频
佛山市翊博互联网络科技有限公司
同城互联网络科技