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)

 

posted on 2021-07-27 16:43  堕落的伊丝莉  阅读(371)  评论(0编辑  收藏  举报