Python
では、列挙型Enum
を使って固定された定数の集合を表現できます。Python
3.4以降の標準ライブラリにはenum
モジュールが含まれており、列挙型の簡単な実装が可能です。
from enum import Enum
class Animal(Enum):
DOG = 1
CAT = 2
この例では、Animal.DOG
は1
という値を持ちます。また、Animal.DOG.name
でメンバー名(“DOG”)、Animal.DOG.value
で値にアクセスできます。
Python 3.4以前のバージョン
Python
3.4以前ではenum34
やaenum
といった外部ライブラリを使用してEnumを実装できます。これらのライブラリは標準のEnumと互換性がありますが、Python
2系や3.3などでも動作します。
pip install enum34
複数の定義方法
列挙メンバーは手動で値を指定することもできますが、自動的に連番を割り当てることも可能です。auto()
を使うことで手動で値を付与せずにシンプルに定義できます。
from enum import Enum, auto
class Color(Enum):
RED = auto()
GREEN = auto()
BLUE = auto()
これにより、Color.RED.value
は自動的に1
、Color.GREEN.value
は2
となります。
応用例
Enumを使ってメンバーを反復処理したり、値を使って逆参照することもできます。
for animal in Animal:
print(animal.name, animal.value)
また、list(Animal)
でEnumのメンバーをリスト化することもできます。これにより、列挙メンバー全体を簡単に取得して操作が可能です。
Python
では、Enumを使って定数の管理や比較が容易になります。状況に応じて、標準のEnumや外部ライブラリを使い分けることで、バージョンの違いにも対応した列挙型を実現できます。