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を活用して、より効率的なコードを書くことができるようになりましょう。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です