相信我們在開發Python應用程式的過程中, 常常會借用Enum來定義我們可能的選項, 就像顏色紅、綠、黃會有這樣的結構:
class Color(str, Enum):
RED = 'red'
GREED = 'green'
YELLOW = 'yellow'
這對於我們在判斷或者顯示上來說可以很直觀的看出哪一種顏色。
print(Color.RED.value) # red
🤔 如果我們有一個情境是「交通號誌燈」, 我們會有基礎的紅綠黃燈, 但某些特定的「地區」上會是「不同的顏色」, 這時候就會有動態的過程, 甚至未來可能會隨著需求而增設或修改, 因此擴充性非常的重要, 但要怎麼做呢? 讓我們繼續看下去吧!
from enum import Enum
class TrafficLightKey(str, Enum):
RED_LIGHT = 'traffic:light:red'
GREEN_LIGHT = 'traffic:light:green'
YELLOW_LIGHT = 'traffic:light:yellow'
DYNAMIC_LIGHT = 'traffic:light:{color}:{location}'
# 使用靜態鍵
print(TrafficLightKey.RED_LIGHT.value) # traffic:light:red
print(TrafficLightKey.GREEN_LIGHT.value) # traffic:light:green
# 使用動態模板鍵,直接用 .format()
dynamic_key = TrafficLightKey.DYNAMIC_LIGHT.value.format(color="blue", location="MainStreet")
print(dynamic_key) # traffic:light:blue:MainStreet
靜態場景:
TrafficLightKey.RED_LIGHT.value
用於存儲標準的紅燈狀態數據。動態場景:
TrafficLightKey.DYNAMIC_LIGHT.value.format(color="blue", location="MainStreet")
動態生成鍵值,例如:原來一個簡單的Enum還有這麼強大的用法可以使用, 學會動態的設計會讓我們的系統更加靈活且簡潔, python這個語言在AI時代之下已經是熱門的程式語言了, 如果您想要系統化學習Python開發也歡迎加入「🔒 阿Han的軟體心法實戰營」, 讓我們共同討論與成長, 雖AI時代有許多工具可以幫助我們完成開發的工作, 但過程所學習到的脈落也是需要我們親自走過才能內化成自身的知識, 一步一腳印, 踏穩每一步才能穩健的登上頂點, 共勉之。