如何灵活运用Python枚举类来实现设计状态码信息
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,如何灵活运用Python枚举类来实现设计状态码信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在 web 项目中,我们经常使用自定义状
千家信息网最后更新 2025年11月12日如何灵活运用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安全错误
数据库的锁怎样保障安全
加强网络安全标题
数据库保存数据不了怎么回事
货车帮网络安全审查需要多久
app访问服务器
录取高校及专业数据库
删除数据库中的数据
数据库工程师数据库管理员
数据库的安全性在哪设置
数据库结果和免疫组化结果不同
大数据炒股软件开发
专业生产语音对讲软件开发
成立网络安全等级保护公司标准
常见的软件开发工具都有哪些
利用impdp导入数据库
广州新江网络技术有限公司
工信部发布网络安全征求意见
国家网络安全教育主题班会大学
佛山教育软件开发公司
tp不适用数据库
基金下单软件开发
电子对抗软件开发
浪潮5112m4服务器
中国期刊数据库和万方哪个好
数据库事务并行执行
无法预估软件开发工时
数据库插入视图报错1054
2019中国网络安全事件案例
西电网络安全实验班
软件开发部年度总结
企业网络安全措施