PythonのEnum
クラスと__getitem__
メソッドについて解説します。
Enumクラス
PythonのEnum
クラスは、一意の値に紐付けられたシンボリックな名前の集合を作成するためのものです。以下にその使用例を示します。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
このように定義すると、Color.RED
、Color.GREEN
、Color.BLUE
といった形で列挙型のメンバー(定数)を参照できます。
__getitem__メソッド
__getitem__
はPythonの特殊メソッドの一つで、オブジェクトに角括弧でアクセスしたときの挙動を定義できます。例えば、以下のように使用します。
class Sample:
def __getitem__(self, item):
return item
a = Sample()
print(a["foo"]) # => foo
print(a[1]) # => 1
この例では、Sample
クラスのインスタンスa
に対して角括弧でアクセスすると、その引数がそのまま返されます。
Enumと__getitem__の組み合わせ
Enum
クラスを継承し、__getitem__
メソッドをオーバーライドすることで、列挙型のメンバーに対して角括弧でアクセスしたときの挙動をカスタマイズすることができます。以下にその使用例を示します。
from enum import Enum
class IndexableEnum(Enum):
def __getitem__(self, key):
return self.value[key]
class Command(IndexableEnum):
SUCCESS = 0, "Exited successfully"
この例では、Command.SUCCESS
に対して角括弧でアクセスすると、そのタプルの要素が返されます。
以上、PythonのEnum
クラスと__getitem__
メソッドについて解説しました。これらを組み合わせることで、より柔軟なコードを書くことができます。