zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    .net core 使用Https总结
    移动宽带丢失gzip
    .net core 3.0 3.1 在docker 下报SSL Handshake failed with OpenSSL error
    使用sequelize-auto 生成mysql 表的实体时主键没有 autoIncrement: true 属性
    asp.net core 控制静态文件的授权
    我用asp.net core 部署到docker遇到的问题
    docker 命令 记录
    docker 容器连接 host的sql server失败
    asp.net core spa应用(angular) 部署同一网站下
    Java使用算数运算符实现两个整数互换
  • 原文地址:https://www.cnblogs.com/cllovewxq/p/15066703.html
Copyright © 2011-2022 走看看