PythonのEnumは、定義順にメンバーを直接イテレートすることができます。例えば、次のようなEnumクラスがあるとします。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
このEnumクラスのメンバーをイテレートするには、次のようにします。
for color in Color:
print(color)
これにより、Color.RED
、Color.GREEN
、Color.BLUE
が順に出力されます。
また、Enumクラスがネストされている場合や、Enumクラスの一部だけをイテレートしたい場合など、より複雑なケースに対応するための方法もあります。
例えば、次のようなネストされたEnumクラスがあるとします。
class Properties(Enum):
height = 'h'
weight = 'w'
colors = Color
このProperties
クラスのメンバーをイテレートする際に、colors
メンバーの値(Color
クラス)も含めてイテレートしたい場合は、次のようにします。
def iter_enum(e):
for member in e:
if inspect.isclass(member.value) and issubclass(member.value, Enum):
iter_enum(member.value)
else:
print(member)
iter_enum(Properties)
これにより、Properties.height
、Properties.weight
、Color.RED
、Color.GREEN
、Color.BLUE
が順に出力されます。
以上がPythonのEnumのイテレーションについての基本的な説明です。より詳細な情報や、他の使用例については公式ドキュメンテーションを参照してください。