Pythonのenum
モジュールは、関連する一連の定数をenum
メンバーとして定義することができます。この記事では、Pythonのenum
の基本的な使い方と、Python3.6以降で追加された機能について解説します。
Enumクラス
最も基本的なenum
はEnum
クラスです。以下にその使用例を示します。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
def print_color(color):
if color == Color.RED:
print('Color is red')
elif color == Color.GREEN:
print('Color is green')
elif color == Color.BLUE:
print('Color is blue')
else:
print('not Color enum')
if __name__ == '__main__':
print_color(Color.BLUE) # Color is blue
このコードでは、Color
というEnum
を定義し、その中にRED
、GREEN
、BLUE
というメンバーを定義しています。そして、print_color
関数を使って、色を出力しています。
IntEnumクラス
IntEnum
クラスはEnum
クラスとint
のサブクラスになっています。IntEnum
のメンバーはint
型と比較することができます。
from enum import IntEnum
class Color(IntEnum):
RED = 1
GREEN = 2
BLUE = 3
if __name__ == '__main__':
print_color(Color.BLUE) # Color is blue
print_color(1) # Color is red
このコードでは、Color
というIntEnum
を定義し、その中にRED
、GREEN
、BLUE
というメンバーを定義しています。そして、print_color
関数を使って、色を出力しています。
auto関数
auto
関数はPython3.6で追加されました。これまでRED
、GREEN
、BLUE
などのメンバーに直接値を指定していましたが、auto
関数を使うと自動で値を割り振ることができます。
from enum import IntEnum, auto
class Color(IntEnum):
RED = auto()
GREEN = auto()
BLUE = auto()
if __name__ == '__main__':
print(int(Color.RED)) # 1
print(int(Color.GREEN)) # 2
print(int(Color.BLUE)) # 3
このコードでは、Color
というIntEnum
を定義し、その中にRED
、GREEN
、BLUE
というメンバーを定義しています。そして、それぞれのメンバーの値を出力しています。
以上がPythonのenum
の基本的な使い方と、Python3.6以降で追加された機能になります。これらの機能を活用することで、コードの可読性や保守性を向上させることができます。