PythonのEnumは、一連の固有の値を記号名に関連付けることができる強力な機能です。Enumはグローバル変数に似ていますが、より便利なrepr()
, グルーピング, 型安全性などの機能を提供します。
Enumのメンバーは、その値をキーとして取得できます。例えば、次のようにEnumを定義し、値を使用してメンバーにアクセスすることができます。
from enum import Enum
class Weekday(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
# 値からEnum要素を取得
print(Weekday(3)) # <Weekday.WEDNESDAY: 3>
また、Enumのメンバーは、その名前と値をそれぞれの属性から取得できます。
print(Weekday.TUESDAY.name) # TUESDAY
print(Weekday.WEDNESDAY.value) # 3
PythonのEnumは、他の多くの言語が列挙型を名前/値のペアとして扱うのに対し、PythonのEnumは振る舞いを追加できるという特徴があります。たとえば、datetime.date
にはweekday()
とisoweekday()
の2つのメソッドがあり、それぞれが0-6と1-7を数えるという違いがあります。これを自分たちで追跡するのではなく、Weekday
Enumに日付から日を抽出し、対応するEnumメンバーを返すメソッドを追加できます。
from enum import Enum
from datetime import date
class Weekday(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
@classmethod
def from_date(cls, date):
return cls(date.isoweekday())
# 今日の曜日を取得
print(Weekday.from_date(date.today()))
このように、PythonのEnumは非常に強力で柔軟性があり、プログラムの可読性と保守性を向上させることができます。Enumを活用して、より効率的なコードを書くことができるようになりましょう。