Pythonでは、列挙型Enumを使って固定された定数の集合を表現できます。Python 3.4以降の標準ライブラリにはenumモジュールが含まれており、列挙型の簡単な実装が可能です。

from enum import Enum
class Animal(Enum):
    DOG = 1
    CAT = 2

この例では、Animal.DOG1という値を持ちます。また、Animal.DOG.nameでメンバー名(“DOG”)、Animal.DOG.valueで値にアクセスできます。

Python 3.4以前のバージョン

Python 3.4以前ではenum34aenumといった外部ライブラリを使用して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は自動的に1Color.GREEN.value2となります。

応用例

Enumを使ってメンバーを反復処理したり、値を使って逆参照することもできます。

for animal in Animal:
    print(animal.name, animal.value)

また、list(Animal)でEnumのメンバーをリスト化することもできます。これにより、列挙メンバー全体を簡単に取得して操作が可能です。 Pythonでは、Enumを使って定数の管理や比較が容易になります。状況に応じて、標準のEnumや外部ライブラリを使い分けることで、バージョンの違いにも対応した列挙型を実現できます。