成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python Enum 技巧,讓代碼更簡潔、更安全、更易維護

開發(fā) 前端
Python 的 ??enum.Enum?? 不僅僅是一個常量集合。通過添加屬性、方法和額外屬性,你可以讓Enum成為應(yīng)用程序中強大的工具。無論你是在構(gòu)建網(wǎng)絡(luò)應(yīng)用程序、API 還是 CLI 工具,這一技巧都能幫助你編寫出更簡潔、更有條理的代碼。

如果你是一名 Python 開發(fā)人員,你很可能使用過 enum.Enum 來創(chuàng)建可讀性和可維護性代碼。

今天發(fā)現(xiàn)一個強大的技巧,可以讓Enum的境界更進一層,這個技巧不僅能提高可讀性,還能以最小的代價增加額外的功能。

在本文中,云朵君和大家一起學(xué)習(xí)一種高級Enum模式,它能讓你的 Python 代碼更健壯、更易維護、更高的魯棒性。

為什么在 Python 中使用Enum?

在我們深入探討這個技巧之前,讓我們先簡單了解一下 Enums 為什么有用。

枚舉可以幫助你定義一組命名的常量,使你的代碼更易讀、更不易出錯。與使用神奇的數(shù)字或硬編碼字符串相比,你可以使用枚舉來表示具有有意義名稱的值。

沒有Enum(糟糕的做法):

STATUS_PENDING = "pending"
STATUS_APPROVED = "approved"
STATUS_REJECTED = "rejected"

def process(status):
    if status == "approved":
        print("Processing approved request")

問題出在哪里?字符串容易出現(xiàn)錯別字,而且缺乏結(jié)構(gòu)。

使用Enum(更好的方法):

from enum import Enum

class Status(Enum):
    PENDING = "pending"
    APPROVED = "approved"
    REJECTED = "rejected"

def process(status: Status):
    if status == Status.APPROVED:
        print("Processing approved request")

現(xiàn)在,我們的代碼更有條理了,而且還能通過Enum獲得類型安全。

Enum技巧:添加額外功能

雖然標準枚舉很棒,但它們?nèi)匀恢皇腔境A俊H绻覀兡転槊總€Enum成員添加額外的元數(shù)據(jù)或行為呢?

使用 @property 和自定義方法

我們可以通過添加屬性和方法來增強Enum,從而提供額外的功能。具體方法如下

from enum import Enum

class Status(Enum):
    PENDING = "pending"
    APPROVED = "approved"
    REJECTED = "rejected"

    @property
    def description(self):
        descriptions = {
            "pending": "The request is pending approval.",
            "approved": "The request has been approved.",
            "rejected": "The request was rejected."
        }
        return descriptions[self.value]

我們不再需要單獨管理描述,而是可以直接訪問它們:

print(Status.PENDING.description)  # Output: The request is pending approval.
print(Status.APPROVED.description)  # Output: The request has been approved.

這將使enum更豐富和 self-contained

Enum高級技巧:映射額外數(shù)據(jù)

通過存儲額外的屬性,還可以在Enum中使用類似于 dataclass 的行為。

from enum import Enum

class Status(Enum):
    PENDING = ("pending", "??")
    APPROVED = ("approved", "?")
    REJECTED = ("rejected", "?")

    def __init__(self, value, emoji):
        self._value_ = value
        self.emoji = emoji

    @property
    def description(self):
        descriptions = {
            "pending": "The request is pending approval.",
            "approved": "The request has been approved.",
            "rejected": "The request was rejected."
        }
        return descriptions[self.value]

# Usage
print(Status.PENDING.emoji)  # Output: ??
print(Status.APPROVED.description)  # Output: The request has been approved.
  • 將相關(guān)數(shù)據(jù)保存在一起 - 無需外部映射。
  • 提高可維護性 - 狀態(tài)的更改不需要修改代碼的多個部分。
  • 提高可讀性 - 開發(fā)人員可以快速查看可用狀態(tài)及其屬性。

圖片圖片

https://docs.python.org/zh-cn/3.7/library/enum.html

寫在最后

Python 的 enum.Enum 不僅僅是一個常量集合。通過添加屬性、方法和額外屬性,你可以讓Enum成為應(yīng)用程序中強大的工具。無論你是在構(gòu)建網(wǎng)絡(luò)應(yīng)用程序、API 還是 CLI 工具,這一技巧都能幫助你編寫出更簡潔、更有條理的代碼。

下一次使用Enum時,不要局限于基本的常量--用這個強大的技巧釋放它們的全部潛能!

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2024-11-11 17:00:27

字典壓縮Python代碼

2025-04-29 10:04:41

JavaScripMap代碼

2022-05-10 10:28:21

JavaScript代碼

2023-02-23 16:49:11

ES6技巧

2020-08-06 16:34:48

Python開發(fā)工具

2024-12-19 09:05:13

Python鏈式調(diào)用

2024-09-18 05:00:00

Python代碼

2019-07-31 10:24:16

JavaScript瀏覽器口袋妖怪

2025-02-17 08:50:00

CSS代碼JavaScript

2023-11-23 13:50:00

Python代碼

2022-04-19 09:18:56

Python代碼Linux

2019-01-15 17:40:03

華為

2023-03-09 15:45:36

ES6編碼技巧數(shù)組

2022-08-28 19:03:18

JavaScript編程語言開發(fā)

2025-02-10 00:25:00

命令模式擴展機制系統(tǒng)

2017-06-14 18:09:02

ButterknifeAndroid

2014-02-26 15:57:41

eLTE華為

2024-10-07 11:02:08

requests編程PythonAI

2018-05-14 17:30:25

2024-05-07 13:44:57

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜爽爽男女免费观看hd | 日日操操 | 一区二区三区四区视频 | 欧美爱爱视频 | 久久伊人一区二区 | 伊人春色在线 | 蜜桃一区二区三区 | 亚洲最大的黄色网址 | 最新国产视频 | 91一区二区三区在线观看 | 国产一级大片 | 91在线免费观看网站 | 在线看av的网址 | 久久久成人动漫 | 99九色| 亚洲在线一区二区 | 看av网| 亚洲成人激情在线观看 | 久久精品国产久精国产 | 国产精品一区二区久久 | 国内精品视频一区二区三区 | 亚洲综合字幕 | 免费看爱爱视频 | 羞羞视频网页 | 麻豆成人在线视频 | 四虎影视免费观看 | 久久99视频 | www.婷婷亚洲基地 | 欧美成人精品一区二区三区 | 黄色一级大片在线免费看产 | 国产高清免费视频 | 成人午夜精品 | 欧美一区二区三区久久精品 | 亚洲欧美综合精品久久成人 | 国产乱码精品1区2区3区 | 盗摄精品av一区二区三区 | 成人av电影天堂 | 日韩av第一页 | 国产精品视频免费看 | 欧美午夜精品久久久久免费视 | 欧美精品一区二区蜜桃 |