Pythonでは、Enum
を使用して状態のリストをカプセル化することができます。しかし、スクリプトの多くのコンテキストで値を文字列としてシームレスに使用する必要がある場合、追加の型変換(上記の str(state)
)または基礎となる値(state.value
)を呼び出すことなく、どのようにそれを行うことができますか?
解決策の一つは、Enum
と同時にstr
クラスから継承することです。この方法では、Enum
のメンバーはすでに文字列であるため、文字列を受け入れるほとんどのコンテキストで直接使用できます。
from enum import Enum
class MyEnum(str, Enum):
state1 = 'state1'
state2 = 'state2'
このコードでは、MyEnum
のメンバーは文字列として扱われ、'This is the state value: ' + state
のような操作が可能になります。
ただし、注意点として、クラスの継承チェーンの順序が重要であり、class MyEnum(Enum, str):
とするとTypeError
が発生します。
また、Python 3.11以降では、StrEnum
をサブクラス化するだけでよりシンプルになります。
以上がPythonで文字列ベースのEnumを扱う一つの方法です。この情報がPythonのコーディングに役立つことを願っています。