当前位置: 首页 > news >正文

Python之枚举类Enum定义错误码

在 ​​web​​​ 项目中,我们经常使用自定义状态码来告知请求方请求结果以及请求状态;在 ​​Python​​ 中该如何设计自定义的状态码信息呢?

1、普通类+字典设计状态码

class 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]
}

2、巧用枚举类设计状态码信息

2.1 枚举类定义

from enum import Enumclass StatusCodeEnum(Enum):"""状态码枚举类"""OK = (0, '成功')ERROR = (-1, '错误')SERVER_ERR = (500, '服务器异常')

普通的类继承 ​​enum​​​ 模块中的 ​​Enum​​ 类就变成了枚举类。枚举类中的每一个属性都返回一个枚举对象,其中枚举对象有两个重要的属性 ​​name​​​, ​​value​​。

  • name枚举对象在枚举类中的属性名
  • value则是枚举对象在枚举类中对应属性名的值

用枚举类组组织一个成功的响应信息:

code = StatusCodeEnum.OK.value[0]
errmsg = StatusCodeEnum.OK.value[1]
data = {'code': code,'errmsg': errmsg
}

2.2 封装枚举类,定义错误码

from enum import Enumclass StatusCodeEnum(Enum):"""状态码枚举类"""OK = (0, '成功')ERROR = (-1, '错误')SERVER_ERR = (500, '服务器异常')@propertydef code(self):"""获取状态码"""return self.value[0]@propertydef errmsg(self):"""获取状态码信息"""return self.value[1]

通过 ​​@property​​ 装饰器把类型的方法当属性使用,由于 枚举类.属性名 对应着不同的枚举对象就很好的把状态码和信息进行了封装。看看外部调用的结果:

data = {'code': StatusCodeEnum.OK.code,'errmsg': StatusCodeEnum.OK.errmsg
}

2.3 项目代码样例

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Desc: { 项目枚举类模块 }from 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, '库存不足')@propertydef code(self):"""获取状态码"""return self.value[0]@propertydef errmsg(self):"""获取状态码信息"""return self.value[1]

参考资料

  • Python之错误码设计:https://blog.51cto.com/u_11045899/5346632
http://www.lryc.cn/news/93728.html

相关文章:

  • GIS大数据处理框架sedona(塞多纳)编程入门指导
  • C++基础(7)——类和对象(5)
  • 【Express.js】sql-knex 增删改查
  • 构建基于前后端分离的医学影像学学习平台:Java技术实现与深度解析
  • 从零开始学习R语言编程:完全指南
  • PulsarMQ系列入门篇
  • 编程的实践理论 第九章 交互
  • BSN全球技术创新发展峰会在武汉举办,“延安链”正式发布
  • 8.4 IP地址与端口号
  • day56_springmvc
  • SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置
  • go 错误 异常
  • 智慧加油站卸油作业行为分析算法 opencv
  • LiangGaRy-学习笔记-Day22
  • 数据库横表和竖表有什么区别
  • 哈希表--day1--基本理论介绍
  • 基于OpenMV的疲劳驾驶检测系统的设计
  • chatgpt赋能python:使用Python来寻找两个列表不同元素的方法
  • 简单学生管理系统
  • 图像金字塔
  • Springboot整合Camunda工作流引擎实现审批流程实例
  • PHP设计模式21-工厂模式的讲解及应用
  • 【玩转Docker小鲸鱼叭】理解Docker的核心概念
  • Eureka 心跳和服务续约源码探秘——图解、源码级解析
  • 代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索
  • Docker安装——CentOS7.6(详细版)
  • 论信息系统项目的整体管理(范文)
  • 【音视频处理】音频编码AAC详解,低码率提高音质?
  • 逆函数学习
  • 代码审计——SSRF详解