\

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関数を使うと、コードがシンプルになり、可読性も向上します。

投稿者 admin

コメントを残す

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