PythonのEnumは、ユニークな値に束縛されたシンボル名の集合です。Enumは多くの言語で採用されており、Pythonでも3.4から利用可能で、3.6からは追加機能が加えられています。
Enumの基本的な使い方は以下の通りです。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
Enumのメンバーは、その名前だけを含む属性name
と、値のための属性value
を持っています。
print(Color.RED.name) # RED
print(Color.RED.value) # 1
また、PythonのEnumは、他の多くの言語が名前/値のペアとして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())) # 例えば、Weekday.TUESDAY
このように、PythonのEnumは非常に強力で、コードの可読性と安全性を向上させることができます。さらに深く理解するためには、公式ドキュメントや関連する記事を参照してください。