やりたいこと
定義済みのEnumから指定したリストで動的にEnumを生成する。
実装例
from enum import Enum
class Color(Enum):
red = "赤"
blue = "青"
yellow = "黄"
purple = "紫"
@classmethod
def generate_enum(cls, target_list: list[str]):
result = {e.name: e.value for e in cls if e.name in target_list}
return Enum(__class__.__name__, result)
使用例
target_list = ["red", "purple"]
results = Color.generate_enum(target_list)
# results["red"], results("赤"), results["purple"], results("紫")が指定可能
説明
クラスメソッドgenerate_enum()
で当該処理を担当。
自身の列挙値を一つずつ取り出し、引数で渡されたリストに存在しているか確認。
存在していれば{name: value}
で格納。
格納値でEnumを再生成して返却。