PythonのEnumは、一連のシンボリックな名前(メンバー)を一意の値にバインドすることができます。しかし、Enumのメンバーが0から始まるようにする方法は一見すると明らかではありません。以下に、PythonのEnumで0からの自動番号付けを行う方法について説明します。
Enumの作成
PythonのEnumは、クラス構文を使用するか、関数呼び出し構文を使用することで作成できます。以下に、それぞれの方法を示します。
from enum import Enum
# クラス構文
class Color(Enum):
RED = 0
GREEN = 1
BLUE = 2
# 関数呼び出し構文
Color = Enum('Color', ['RED', 'GREEN', 'BLUE'])
これらのEnumは、それぞれのメンバーが一意の整数値を持つことを確認できます。しかし、これらのEnumは1から始まります。
0から始まるEnum
PythonのEnumで0から始まるようにするには、Enumの作成時にstart
パラメータを使用して異なる開始値を指定します。以下に、その方法を示します。
Color = Enum('Color', ['RED', 'GREEN', 'BLUE'], start=0)
このEnumは、メンバーが0から始まることを確認できます。
注意点
Enumのメンバーが一般的に1から始まる理由は、0がFalseであるため、EnumのメンバーがすべてTrueと評価されるようにするためです。0から始まると、後で混乱する可能性があります。
以上、PythonのEnumで0からの自動番号付けを行う方法について説明しました。この情報がPythonのEnumの理解に役立つことを願っています。