python知识点(Enum枚举类)
博主很久没有更新了,整理些这段时间python开发过程中掌握的知识点
首先就是枚举类 enum的用法
开发过程中比如返回信息,错误码校验等场景,需要用到枚举类来统一这些信息
这里给一个最通用的代码示例
1 # -*- coding: utf-8 -*- 2 # 枚举code 3 # 作者: XX 4 # 时间: XX 5 6 7 from enum import Enum, unique 8 9 10 @unique 11 class EnumCode(Enum): 12 """ 13 枚举code 14 """ 15 16 Success = {200: "请求成功"} 17 Error = {500: "请求失败"} 18 19 InvalidParam = {1001: "请求参数无效"} 20 NotFound = {1002: "数据不存在"} 21 AlreadyExists = {1003: "数据已存在"} 22 PermissionDenied = {1004: "数据权限不足"} 23 24 AuthFailed = {4001: "认证失败"} 25 MethodNotSupport = {4002: "{}请求方法不支持"} 26 UrlNotFound = {4003: "请求url不存在"} 27 UnknownError = {4004: "服务未知异常"} 28 29 KnownError = {4005: "服务已知异常:{}"} 30 AuthNotActivate = {4006: "认证未激活"} 31 AuthActivated = {4007: "认证已激活"} 32 33 # 请求成功 不同业务返回信息 34 SuccessRegister = {200: "用户注册成功"} 35 SuccessLogin = {200: "用户登录成功"} 36 SuccessLogout = {200: "用户登出成功"} 37 SuccessActivate = {200: "用户激活成功"} 38 SuccessUpdateUserInfo = {200: "用户信息修改成功"} 39 40 # 已知异常 不同业务返回信息 41 KnownErrorLogin = {4005: "服务已知异常:登录信息错误"} 42 KnownErrorEmailFormat = {4005: "服务已知异常:邮箱格式错误"} 43 44 @property 45 def Code(self): 46 """ 47 根据枚举名称取状态说明code 48 :return: 状态说明code 49 """ 50 return list(self.value.keys())[0] 51 52 @property 53 def Msg(self): 54 """ 55 根据枚举名称取状态说明msg 56 :return: 状态说明msg 57 """ 58 return list(self.value.values())[0] 59
下面是读取场景
1、拿到 Success 中的 key
1 print(EnumCode.Success.Code)
打印:
200
2、拿到 Success 中的 value
1 print(EnumCode.Success.Msg)
打印:
"请求成功"
3、拿到 Success 本身的值
1 print(EnumCode.Success.value)
打印:
{200: '请求成功'}
下面是Django中的使用案例
二次封装 APIView
1 class BaseAPIView(APIView): 2 """ 3 通用基础API视图 4 """ 5 6 def dispatch(self, request, *args, **kwargs): 7 # 判断是否GET, POST请求方法 8 if request.method in ['GET', 'POST']: 9 # 继承原dispatch方法 10 return super().dispatch(request, *args, **kwargs) 11 else: 12 # 非GET, POST请求方法 13 resp = CommonResponse() 14 # 更新code msg, 取枚举类中的信息 15 resp.update(code=EnumCode.MethodNotSupport.Code, msg=EnumCode.MethodNotSupport.Msg.format(request.method)) 16 response = resp.response 17 return JsonResponse(response)