1. ホーム
  2. python

[解決済み] PythonのEnumを拡張するには?

2023-07-14 12:08:26

質問

の拡張のためのベストプラクティスは何ですか? Enum を拡張するベストプラクティスは何ですか?

例えば

from enum import Enum

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

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

Traceback (most recent call last):
...
TypeError: Cannot extend enumerations

現在のところ、メンバを持つ基本 enum クラスを作成し、それを他の enum クラスで使用する方法はありません (上記の例のように)。Pythonのenumに継承を実装する他の方法はないのでしょうか?

どのように解決するのですか?

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

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

https://docs.python.org/3/library/enum.html#restricted-enum-subclassing

そこで いいえ のように、直接的には不可能なのです。