🌊
Python: Enumクラスを拡張する
環境
- Python 3.9.7
やりたいこと
今、Pet
というEnumクラスがあります。
from enum import Enum
class Pet(Enum):
dog=1
cat=2
このPet
クラスを拡張して、Animal
というEnumクラスを定義したいです。
しかし、Pet
クラスを継承するとエラーが発生します。
class Animal(Pet):
cow=3
# ⇒ TypeError: Animal: cannot extend enumeration 'Pet'
継承できない旨は、公式サイトにも記載されています。
Also, subclassing an enumeration is allowed only if the enumeration does not define any members.
解決方法
Enum()
を呼び出して、動的にEnumクラスを生成します。
tmp = {e.name:e.value for e in Pet} | {"cow": 3}
Animal = Enum("Animal", tmp)
print([e for e in tmp])
# => [<Animal.dog: 1>, <Animal.cat: 2>, <Animal.cow: 3>]
参考情報
Discussion