Pythonのenum
モジュールは、一連の記号名を一意の値にバインドすることができるEnum
クラスを提供しています。これらの記号名は、グローバル変数に似ていますが、より有用なrepr()
、グルーピング、型安全性、およびいくつかの他の機能を提供します。
例えば、以下のように週の日を表すEnumを作成することができます。
from enum import Enum
class Weekday(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
また、RGBのプライマリカラーを表すEnumも作成できます。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
Enumのメンバーは、その名前と値を持ちます。例えば、Weekday.MONDAY
の名前はMONDAY
で、値は1
です。
PythonのEnumは、名前/値のペアとしての列挙型を扱う多くの言語とは異なり、振る舞いを追加することができます。たとえば、datetime.date
には、曜日を返すための2つのメソッド、weekday()
とisoweekday()
があります。これらの違いは、一方が0-6を数え、もう一方が1-7を数えることです。これを自分たちで追跡する代わりに、日付から曜日を抽出し、対応するEnumメンバーを返すメソッドをWeekday 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())
これで、今日が何曜日かを見つけることができます。
from datetime import date
print(Weekday.from_date(date.today()))
以上がPythonのEnum関数の基本的な使い方となります。これを使うことで、コードの可読性と保守性を向上させることができます。