PythonのEnumクラスは、列挙型を扱うためのクラスです。Python3.4から標準ライブラリに追加されました。
Python3.6では、Enumクラスに自動で値を付けるためのauto()
という表現が追加されました。これは、Enumのメンバーに直接値を指定する代わりに、自動で値を割り振ることができます。
from enum import Enum, auto
class Color(Enum):
RED = auto()
GREEN = auto()
BLUE = auto()
このコードでは、RED
, GREEN
, BLUE
というEnumのメンバーがあり、それぞれにauto()
が割り当てられています。これにより、各メンバーには自動的に1から始まる整数が割り当てられます。
ただし、この振る舞いは実装依存であり、恒久的にするには、自分でauto()
の挙動を定義する必要があります。
from enum import IntEnum, auto
class AutoIntEnum(IntEnum):
def _generate_next_value_(name, start, count, last_values):
for last_value in reversed(last_values):
try:
return last_value + 1
except TypeError:
pass
else:
return start
class Field(AutoIntEnum):
OrderNo = auto()
CustomerNo = auto()
PurchaseDate = auto()
ProductID = 10
Price = auto()
Units = auto()
Amount = auto()
for elm in Field:
print(elm, int(elm))
このように、PythonのEnumとauto関数を使うと、コードがシンプルになり、可読性も向上します。