最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

靈活運(yùn)用Python 枚舉類來實(shí)現(xiàn)設(shè)計(jì)狀態(tài)碼信息

 更新時(shí)間:2021年09月29日 16:50:58   作者:憶想不到的暉  
在python中枚舉是一種類(Enum,IntEnum),存放在enum模塊中。枚舉類型可以給一組標(biāo)簽賦予一組特定的值,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

引言

web 項(xiàng)目中,我們經(jīng)常使用自定義狀態(tài)碼來告知請(qǐng)求方請(qǐng)求結(jié)果以及請(qǐng)求狀態(tài);在 Python 中該如何設(shè)計(jì)自定義的狀態(tài)碼信息呢?

普通類加字典設(shè)計(jì)狀態(tài)碼

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Hui
# @Desc: { 項(xiàng)目響應(yīng)碼模塊 }
# @Date: 2021/09/22 23:37


class RETCODE:
    OK                  = "0"
    ERROR               = "-1"
    IMAGECODEERR        = "4001"
    THROTTLINGERR       = "4002"
    NECESSARYPARAMERR   = "4003"
    

err_msg = {
    RETCODE.OK                 : "成功",
    RETCODE.IMAGECODEERR       : "圖形驗(yàn)證碼錯(cuò)誤",
    RETCODE.THROTTLINGERR      : "訪問過于頻繁",
    RETCODE.NECESSARYPARAMERR  : "缺少必傳參數(shù)",
}

單獨(dú)利用一個(gè)字典進(jìn)行狀態(tài)碼信息對(duì)照,這樣設(shè)計(jì)一旦狀態(tài)碼多了就不好對(duì)照,再使用過程中也沒那么方便,簡(jiǎn)單試下組織一個(gè)成功的信息

data = {
    'code': RETCODE.OK,
    'errmsg': err_msg[RETCODE.OK]
}

巧用枚舉類設(shè)計(jì)狀態(tài)碼信息

利用枚舉類就可以巧妙的設(shè)計(jì)狀態(tài)碼信息

枚舉類的定義

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Hui
# @Desc: { 項(xiàng)目枚舉類模塊 }
# @Date: 2021/09/23 23:37

from enum import Enum


class StatusCodeEnum(Enum):
    """狀態(tài)碼枚舉類"""

    OK = (0, '成功')
    ERROR = (-1, '錯(cuò)誤')
    SERVER_ERR = (500, '服務(wù)器異常')

普通的類繼承 enum 模塊中的 Enum 類就變成了枚舉類。

枚舉類的使用

ipython 中測(cè)試使用下

In [21]: ok = StatusCodeEnum.OK

In [22]: type(ok)
Out[22]: <enum 'StatusCodeEnum'>

In [23]: error = StatusCodeEnum.ERROR

In [24]: type(error)
Out[24]: <enum 'StatusCodeEnum'>

In [26]: ok.name
Out[26]: 'OK'

In [27]: ok.value
Out[27]: (0, '成功')

In [28]: error.name
Out[28]: 'ERROR'

In [29]: error.value
Out[29]: (-1, '錯(cuò)誤')

枚舉類中的每一個(gè)屬性都返回一個(gè)枚舉對(duì)象,其中枚舉對(duì)象有兩個(gè)重要的屬性 name, value

  • name 枚舉對(duì)象在枚舉類中的屬性名
  • value 則是枚舉對(duì)象在枚舉類中對(duì)應(yīng)屬性名的值
# StatusCodeEnum.OK ->
#    name     value
#	'OK'   (200, '成功')

# StatusCodeEnum.ERROR ->
#    name       value
#	'ERROR'   (-1, '錯(cuò)誤')

用枚舉類組組織一個(gè)成功的響應(yīng)信息

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

咋一看雖然狀態(tài)碼信息一一對(duì)照了,也很簡(jiǎn)潔,但使用起來還是有點(diǎn)麻煩,還有一點(diǎn)就是

StatusCodeEnum.OK.value[0] 這樣的語法不能立馬見名知義。因此還需對(duì)枚舉類進(jìn)行封裝

封裝枚舉類

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Hui
# @Desc: { 項(xiàng)目枚舉類模塊 }
# @Date: 2021/09/23 23:37

from enum import Enum


class StatusCodeEnum(Enum):
    """狀態(tài)碼枚舉類"""

    OK = (0, '成功')
    ERROR = (-1, '錯(cuò)誤')
    SERVER_ERR = (500, '服務(wù)器異常')

    @property
    def code(self):
        """獲取狀態(tài)碼"""
        return self.value[0]

    @property
    def errmsg(self):
        """獲取狀態(tài)碼信息"""
        return self.value[1]

通過 @property 裝飾器把類型的方法當(dāng)屬性使用,由于 枚舉類.屬性名 對(duì)應(yīng)著不同的枚舉對(duì)象就很好的把狀態(tài)碼和信息進(jìn)行了封裝。看看外部調(diào)用的結(jié)果

In [32]: StatusCodeEnum.OK.code
Out[32]: 0

In [33]: StatusCodeEnum.OK.errmsg
Out[33]: '成功'

In [34]: StatusCodeEnum.ERROR.code
Out[34]: -1

In [35]: StatusCodeEnum.ERROR.errmsg
Out[35]: '錯(cuò)誤'

具體 @property 裝飾器的使用詳解,可以移步到 Python中property的使用技巧

繼續(xù)模擬組織響應(yīng)數(shù)據(jù)

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

這下終于可以接受了。

狀態(tài)碼信息枚舉類

分享一波我平時(shí)用的狀態(tài)碼信息枚舉類,供大家參考參考。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Author: Hui
# @Desc: { 項(xiàng)目枚舉類模塊 }
# @Date: 2021/09/23 23:37

from enum import Enum


class StatusCodeEnum(Enum):
    """狀態(tài)碼枚舉類"""

    OK = (0, '成功')
    ERROR = (-1, '錯(cuò)誤')
    SERVER_ERR = (500, '服務(wù)器異常')

    IMAGE_CODE_ERR = (4001, '圖形驗(yàn)證碼錯(cuò)誤')
    THROTTLING_ERR = (4002, '訪問過于頻繁')
    NECESSARY_PARAM_ERR = (4003, '缺少必傳參數(shù)')
    USER_ERR = (4004, '用戶名錯(cuò)誤')
    PWD_ERR = (4005, '密碼錯(cuò)誤')
    CPWD_ERR = (4006, '密碼不一致')
    MOBILE_ERR = (4007, '手機(jī)號(hào)錯(cuò)誤')
    SMS_CODE_ERR = (4008, '短信驗(yàn)證碼有誤')
    ALLOW_ERR = (4009, '未勾選協(xié)議')
    SESSION_ERR = (4010, '用戶未登錄')

    DB_ERR = (5000, '數(shù)據(jù)錯(cuò)誤')
    EMAIL_ERR = (5001, '郵箱錯(cuò)誤')
    TEL_ERR = (5002, '固定電話錯(cuò)誤')
    NODATA_ERR = (5003, '無數(shù)據(jù)')
    NEW_PWD_ERR = (5004, '新密碼錯(cuò)誤')
    OPENID_ERR = (5005, '無效的openid')
    PARAM_ERR = (5006, '參數(shù)錯(cuò)誤')
    STOCK_ERR = (5007, '庫(kù)存不足')

    @property
    def code(self):
        """獲取狀態(tài)碼"""
        return self.value[0]

    @property
    def errmsg(self):
        """獲取狀態(tài)碼信息"""
        return self.value[1]

尾語

✍ 用 Code 譜寫世界,讓生活更有趣。❤️

✍ 萬水千山總是情,點(diǎn)贊再走行不行。❤️

✍ 碼字不易,還望各位大俠多多支持。❤️

到此這篇關(guān)于靈活運(yùn)用Python 枚舉類來實(shí)現(xiàn)設(shè)計(jì)狀態(tài)碼信息的文章就介紹到這了,更多相關(guān)Python 枚舉類 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)平行坐標(biāo)圖的兩種方法小結(jié)

    Python實(shí)現(xiàn)平行坐標(biāo)圖的兩種方法小結(jié)

    今天小編就為大家分享一篇Python實(shí)現(xiàn)平行坐標(biāo)圖的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 存儲(chǔ)字符串時(shí)節(jié)省空間的方法

    Python 存儲(chǔ)字符串時(shí)節(jié)省空間的方法

    這篇文章主要介紹了Python 存儲(chǔ)字符串時(shí)節(jié)省空間的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Python?pickle?二進(jìn)制序列化和反序列化及數(shù)據(jù)持久化詳解

    Python?pickle?二進(jìn)制序列化和反序列化及數(shù)據(jù)持久化詳解

    這篇文章主要介紹了Python?pickle?二進(jìn)制序列化和反序列化?-?數(shù)據(jù)持久化,模塊?pickle?實(shí)現(xiàn)了對(duì)一個(gè)?Python?對(duì)象結(jié)構(gòu)的二進(jìn)制序列化和反序列化,本文介紹了Pickle的基本用法,需要的朋友可以參考下
    2024-01-01
  • Pygame實(shí)戰(zhàn)練習(xí)之推箱子游戲

    Pygame實(shí)戰(zhàn)練習(xí)之推箱子游戲

    推箱子想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡(jiǎn)單的推箱子小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • pandas?dataframe按照列名給列排序三種方法

    pandas?dataframe按照列名給列排序三種方法

    這篇文章主要給大家介紹了關(guān)于pandas?dataframe按照列名給列排序的三種方法,在進(jìn)行數(shù)據(jù)分析操作時(shí),經(jīng)常需要對(duì)數(shù)據(jù)按照某行某列排序,或者按照多行多列排序,以及按照索引值排序等等,需要的朋友可以參考下
    2023-07-07
  • Python線程指南分享

    Python線程指南分享

    今天小編就為大家?guī)鞵ython線程指南分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法

    Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module 

    這篇文章給大家介紹了Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問題的朋友可以參考閱讀一下本文
    2023-10-10
  • Python中pandas groupby()用法案例詳解

    Python中pandas groupby()用法案例詳解

    groupby()函數(shù)是pandas庫(kù)中一個(gè)非常強(qiáng)大的工具,它允許我們按照一個(gè)或多個(gè)特征對(duì)數(shù)據(jù)進(jìn)行分組,并對(duì)每個(gè)組進(jìn)行聚合、轉(zhuǎn)換和過濾操作,本文將探討pandas庫(kù)中非常強(qiáng)大的groupby()函數(shù),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧分享

    Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧分享

    這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 使用pandas讀取表格數(shù)據(jù)并進(jìn)行單行數(shù)據(jù)拼接的詳細(xì)教程

    使用pandas讀取表格數(shù)據(jù)并進(jìn)行單行數(shù)據(jù)拼接的詳細(xì)教程

    這篇文章主要介紹了使用pandas讀取表格數(shù)據(jù)并進(jìn)行單行數(shù)據(jù)拼接的詳細(xì)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

富平县| 江陵县| 扬中市| 张北县| 西青区| 武定县| 额济纳旗| 合水县| 汤原县| 诸暨市| 永善县| 兴国县| 宜章县| 佳木斯市| 黄梅县| 新安县| 兴文县| 英德市| 珲春市| 云安县| 华蓥市| 忻城县| 湘西| 招远市| 高要市| 林西县| 峡江县| 顺昌县| 米易县| 内江市| 滨海县| 横峰县| 黑龙江省| 全南县| 连云港市| 栖霞市| 馆陶县| 大兴区| 汉沽区| 利川市| 息烽县|