Python Enum を拡張するには? 質問する

Python Enum を拡張するには? 質問する

EnumPython 3.4 の新機能を使用して作成されたクラスを拡張することは可能ですか? 方法は?

単純なサブクラス化は機能しないようです。次のような例

from enum import Enum

class EventStatus(Enum):
   success = 0
   failure = 1

class BookingStatus(EventStatus):
   duplicate = 2
   unknown = 3

TypeError: Cannot extend enumerationsまたは (最近のバージョンでは)のような例外が発生しますTypeError: BookingStatus: cannot extend enumeration 'EventStatus'

BookingStatus列挙値を再利用してEventStatusさらに追加するにはどうすればよいでしょうか?

ベストアンサー1

列挙型のサブクラス化は、列挙型がメンバーを定義していない場合にのみ許可されます。

メンバーを定義する列挙型のサブクラス化を許可すると、型とインスタンスのいくつかの重要な不変条件に違反することになります。

https://docs.python.org/3/howto/enum.html#制限付き列挙サブクラス化

それでいいえ、直接的には不可能です。

おすすめ記事