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
相关文章:
Python之枚举类Enum定义错误码
在 web 项目中,我们经常使用自定义状态码来告知请求方请求结果以及请求状态;在 Python 中该如何设计自定义的状态码信息呢? 1、普通类字典设计状态码 class RETCODE:OK "0"ERROR …...
GIS大数据处理框架sedona(塞多纳)编程入门指导
GIS大数据处理框架sedona(塞多纳)编程入门指导 简介 Apache Sedona™是一个用于处理大规模空间数据的集群计算系统。Sedona扩展了现有的集群计算系统,如Apache Spark和Apache Flink,使用一组开箱即用的分布式空间数据集和空间SQL,可以有效地…...
C++基础(7)——类和对象(5)
前言 本文主要介绍C中的继承 4.6.1:继承和继承方式(公有、保护、私有) 4.6.2:继承中的对象模型,sizeof()求子类对象大小 4.6.3:子类继承父类后,两者构造和析构顺序 父类先构造、子类先析构 如…...
【Express.js】sql-knex 增删改查
Sql增删改查 本节使用knex作为sql框架,以sqlite数据库为例 准备工作 knex是一个运行在各自数据库Driver上的框架,因此需要安装相应的js版数据库Driver,如: PostgreSQL -> pg, mysql/mariadb -> mysql, sqlite -> sqlite3… 安装…...
构建基于前后端分离的医学影像学学习平台:Java技术实现与深度解析
在医学领域,影像学学习平台是一种重要的工具,用于帮助医学学生和专业人士学习和研究医学影像。本文将介绍如何使用Java构建一个基于前后端分离的医学影像学学习平台,通过结合前沿的Web开发技术和医学影像处理算法,为用户提供强大且高效的学习工具。 技术架构设计: 在构…...
从零开始学习R语言编程:完全指南
一、引言 R语言是一种流行的数据分析语言,广泛应用于学术界、商业界和社会科学研究等领域。与其它数据分析软件相比,R语言的优点包括免费开源、高效可靠、具有强大的数据分析和可视化能力等。R语言的编程基础包括了各种控制结构和函数,可以方…...
PulsarMQ系列入门篇
文章目录 介绍:部署安装讲解:安装单机版本测试(Linux下): 介绍: PulsarMQ 现托管于apache Apache 软件基金会顶级项目,2016年由雅虎公司开源的分布式多租户消息中间件 ,是下一代云原生分布式消息…...
编程的实践理论 第九章 交互
第九章 交互 根据状态的初始值和终止值,我们已经描述了计算。一个状态变量的声明如下: var x: T S ∃x, x′: T S 它说的是一个状态变量有两个数学变量,一个是初始值,一个是终止值。在这个 声明的作用域内,x和x…...
BSN全球技术创新发展峰会在武汉举办,“延安链”正式发布
原标题:《第二届BSN全球技术创新发展峰会在武汉成功举行》 6月9日,由湖北省人民政府指导,湖北省发展改革委、国家信息中心联合主办,中国移动、中国电信、中国联通、武汉市江汉区人民政府、区块链服务网络(BSN…...
8.4 IP地址与端口号
目录 IP地址 IP地址及编址方式 IP 地址及其表示方法 点分十进制记法举例 IP 地址采用 2 级结构 分类的 IP 地址 分类的 IP 地址 多归属主机 各类 IP 地址的指派范围 编辑 一般不使用的特殊的 IP 地址 编辑 分类的 IP 地址的优点和缺点 划分子网 无分类编址 CIDR 无…...
day56_springmvc
今日内容 零、 复习昨日 零、 复习昨日 一、JSON处理【重点】 springmvc支持json数据交互,但是自己本身没有对应jar,使用的是第三方Jackson,只需要导入对应依赖,springmvc即可使用 如果需要换用到FastJson 导入依赖配置文件中指定json转换的类型为FastJson本次课程没有替换,用的…...
SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置
目录 (一)前言 (二)下载与安装 1. 下载 (1)下载地址 (2)SSMS对操作系统的要求 2. 安装 (1)存放下载好的安装包 (2) 双击进入安…...
go 错误 异常
自定义错误 Go语言中 错误使用内建的 error 类型表示, error类型是一个接口类型:定义如下: error 有一个 Error() 的方法‘所有实现该接口的类型 都可以当做一个错误的类型;Error()方法输入具体错误描述,在打印错误时…...
智慧加油站卸油作业行为分析算法 opencv
智慧加油站卸油作业行为分析系统通过opencvpython网络模型技术,智慧加油站卸油作业行为分析算法实现对卸油作业过程的实时监测。当现场出现卸油作业时人员离岗,打电话人员抽烟等违规行为,灭火器未正确摆放,明火和烟雾等异常状态&a…...
LiangGaRy-学习笔记-Day22
1、shell工具-tput 这个是tput bash工具 具体的操作如下: tput clear:清屏tput cup Y X 第Y行,第X列的位置 tput bold:字体加粗tput sgr0 : 重置命令tput setaf n n:代表数字0-7 0黑色1红色2绿色3黄色4蓝…...
数据库横表和竖表有什么区别
横表和竖表是描述数据库表结构的两种形式,它们之间的主要区别在于数据的组织方式和用途。 横表(宽表): 横表是一种常见的表结构,其特点是每一行数据包含所有相关属性,字段通常作为列出现。横表中的每行代表…...
哈希表--day1--基本理论介绍
文章目录 哈希表哈希函数哈希碰撞拉链法线性探测法 常见的三种哈希函数数组setmap 总结 哈希表 Hash table是根据关键码的值来直接进行访问的数据结构。 其实直白来讲其实数组就是一张哈希表,不过其索引是十分简单的,我们通过0来访问num[0],…...
基于OpenMV的疲劳驾驶检测系统的设计
一、前言 借助平台将毕业设计记录下来,方便以后查看以及与各位大佬朋友们交流学习。如有问题可以私信哦。 本文主要从两个方面介绍毕业设计:硬件,软件(算法)。以及对最后的实验结果进行分析。感兴趣的朋友们可以评论区…...
chatgpt赋能python:使用Python来寻找两个列表不同元素的方法
使用Python来寻找两个列表不同元素的方法 在编写Python程序时,我们经常需要比较两个列表的元素,找出它们之间的不同之处。在搜索引擎优化(SEO)方面,这种比较对于找出两个网站内容的差异也非常有用。在这篇文章中&…...
简单学生管理系统
简单学生管理系统(Java)_封奚泽优的博客-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/130667107?spm1001.2014.3001.5501 转载请注明出处,尊重作者劳动成果。 目录 前期准备: 数据库的连接: 用户账号类:…...
【2024最严苛功能压力测试】:在金融合规文档生成、医疗术语推理、代码安全审计三大高危场景下,Claude与Gemini谁扛住了0误判红线?
更多请点击: https://intelliparadigm.com 第一章:【2024最严苛功能压力测试】:在金融合规文档生成、医疗术语推理、代码安全审计三大高危场景下,Claude与Gemini谁扛住了0误判红线? 测试设计原则 本测试采用“双盲对…...
谷歌首次阻止AI驱动的零日漏洞攻击,黑客利用AI找漏洞手段曝光
AI零日漏洞攻击计划浮出水面谷歌威胁情报小组(GTIG)的报告显示,“知名网络犯罪威胁行为者”正谋划利用人工智能开发的零日漏洞发动“大规模利用事件”。其目标是绕过一款未具名的“开源、基于网络的系统管理工具”的双因素认证。目前谷歌已成…...
活动策划27年:一场手印启动,让我读懂“谨慎”二字
活动策划27年:一场手印启动,让我读懂“谨慎”二字做活动策划27年,千余场活动下来,我常跟团队说:“做活动,不怕累,就怕措手不及的意外。”每一场活动前,我都要反复推演流程࿰…...
NExT-GPT:从多模态对齐到任意模态生成的架构与实战
1. 项目概述:从“多模态”到“任意模态”的进化 如果你在过去一年里关注过AI领域,一定对“多模态大模型”这个词不陌生。从GPT-4V到Gemini,主流模型都在努力让AI能同时理解文本和图像。但不知道你有没有想过一个问题:为什么我们和…...
深入解析Trust Layer:声明式信任管理在微服务架构中的工程实践
1. 项目概述与核心价值最近在开源社区里,一个名为openclawunboxed/trust-layer的项目引起了我的注意。乍一看这个标题,可能会觉得有些抽象——“信任层”?这听起来像是一个偏学术或理论性的概念。但当我深入其代码仓库和设计文档后࿰…...
DeepSeek代码能力实测:3大编程范式通过率对比,92.7%准确率背后的5个隐藏陷阱
更多请点击: https://intelliparadigm.com 第一章:DeepSeek HumanEval测试全景概览 HumanEval 是由 OpenAI 提出的函数级代码生成基准测试集,包含 164 道 Python 编程题,每道题提供函数签名、文档字符串(docstring&am…...
SMD电阻脉冲负载能力解析与工程实践
1. SMD电阻脉冲负载能力解析:工程师必须掌握的核心知识在工业控制板卡维修现场,我曾遇到一个令人费解的案例:某型号PLC的输入保护电路在雷雨季节频繁损坏,但检查发现所有元件参数都符合设计要求。最终用热成像仪捕捉到瞬间现象——…...
【Linux保姆级教程】curl命令最全用法详解
在Linux日常运维、后端开发、接口调试工作中,有一个命令几乎无人不知、无人不用,它就是curl命令。curl被称为网络传输瑞士军刀,无需打开浏览器,纯命令行即可发送网络请求,支持HTTP/HTTPS/FTP等数十种协议。不管是测试接…...
【Kanzi 资源系统完全笔记】
一、Resource 的类层次结构Kanzi 中所有资源(Resource)都继承自 Object 基类。下图是常见的资源继承体系(根据图片整理):Object└── Resource├── GPUResource # 位于 GPU 显存中的资源(纹理、…...
Factool开源框架:构建可信AI的事实核查自动化流水线
1. 项目概述:从“事实核查”到“可信AI”的基石工具在信息爆炸的时代,我们每天都被海量的文本内容包围——新闻稿、分析报告、产品介绍、学术论文,甚至是AI模型自己生成的回答。一个核心的挑战随之而来:如何快速、准确地判断一段文…...
