人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

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

發(fā)布日期:2021-12-29 18:34 | 文章來源:腳本之家

引言

web 項(xiàng)目中,我們經(jīng)常使用自定義狀態(tài)碼來告知請求方請求結(jié)果以及請求狀態(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)證碼錯誤",
 RETCODE.THROTTLINGERR: "訪問過于頻繁",
 RETCODE.NECESSARYPARAMERR  : "缺少必傳參數(shù)",
}

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

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, '錯誤')
 SERVER_ERR = (500, '服務(wù)器異常')

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

枚舉類的使用

ipython 中測試使用下

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, '錯誤')

枚舉類中的每一個屬性都返回一個枚舉對象,其中枚舉對象有兩個重要的屬性 name, value

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

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

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

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

StatusCodeEnum.OK.value[0] 這樣的語法不能立馬見名知義。因此還需對枚舉類進(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, '錯誤')
 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)屬性使用,由于 枚舉類.屬性名 對應(yīng)著不同的枚舉對象就很好的把狀態(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]: '錯誤'

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

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

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

這下終于可以接受了。

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

分享一波我平時用的狀態(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, '錯誤')
 SERVER_ERR = (500, '服務(wù)器異常')
 IMAGE_CODE_ERR = (4001, '圖形驗(yàn)證碼錯誤')
 THROTTLING_ERR = (4002, '訪問過于頻繁')
 NECESSARY_PARAM_ERR = (4003, '缺少必傳參數(shù)')
 USER_ERR = (4004, '用戶名錯誤')
 PWD_ERR = (4005, '密碼錯誤')
 CPWD_ERR = (4006, '密碼不一致')
 MOBILE_ERR = (4007, '手機(jī)號錯誤')
 SMS_CODE_ERR = (4008, '短信驗(yàn)證碼有誤')
 ALLOW_ERR = (4009, '未勾選協(xié)議')
 SESSION_ERR = (4010, '用戶未登錄')
 DB_ERR = (5000, '數(shù)據(jù)錯誤')
 EMAIL_ERR = (5001, '郵箱錯誤')
 TEL_ERR = (5002, '固定電話錯誤')
 NODATA_ERR = (5003, '無數(shù)據(jù)')
 NEW_PWD_ERR = (5004, '新密碼錯誤')
 OPENID_ERR = (5005, '無效的openid')
 PARAM_ERR = (5006, '參數(shù)錯誤')
 STOCK_ERR = (5007, '庫存不足')
 @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)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部