Python の列挙型
このチュートリアルでは、Python で列挙型
を使用または実装するさまざまな方法を検討します。enum
または列挙型は、数値型の名前付き定数のセットを表す特別な型のクラスです。enum
タイプの各名前付き定数には独自の整数値があり、セットの名前付き定数の位置によって異なります。
enum
型は、C#、Java、Go、C、C++ などの多くのプログラミング言語で整数値のセットに定数名を割り当てるために使用されます。Python で列挙型を実装して使用するには、次のメソッドを使用します。以下に説明します。
Python で enum
モジュールを使用したの列挙
Python の enum
モジュールには、Enum
、IntEnum
、Flag
、および IntFlag
の 4つのクラスがあります。モジュールとクラスの詳細については、このリンクにアクセスしてください。
Enum
クラスでは、各名前定数の値はデフォルトで整数ですが、string や float などのデータ型を渡すこともできます。IntEnum
クラスの名前定数の値は、名前が示すように、次のことができます。整数のみです。
Enum
クラスと IntEnum
クラスを使用して、Python で列挙型を作成して使用できます。以下のサンプルコードは、これらのクラスを使用して Python でさまざまなタイプの列挙子を実装する方法を示しています。
単純な列挙子:
from enum import Enum
Names = Enum("Names", ["Waiz", "Tom", "Sara", "Lee"])
(name, value)
ペアのイテレータを使用して、名前定数の ID やマークなどを表す特定の値を各名前で保存できます。Enum.nameconstant.value
を使用して値にアクセスし、Enum.nameconstant.name
を使用して名前にアクセスすることで、名前の定数値と名前にアクセスできます。
以下のサンプルコードを使用して、Python でこれを行うことができます。
from enum import Enum
Names = Enum("Names", [("Waiz", 8), ("Tom", 5), ("Sara", 7), ("Lee", 6)])
print(Names.Sara.value)
print(Names.Waiz.name)
出力:
7
Waiz
列挙子を作成する別の方法は、クラス構文を使用してから、以下のサンプルコードに示すように Enum
または IntEnum
を渡すことです。
from enum import IntEnum
class Student(IntEnum):
Waiz = 1
Ali = 2
John = 3
Lee = 4
print(Student.Lee.value)
出力:
4
Python で通常のクラス構文を使用して列挙型を実装する
2.4 より前の Python バージョンでは、Enum
モジュールは使用できません。その場合、クラス構文を使用して、列挙子 Enum
の独自のクラス
を実装できます。
以下のサンプルコードに示すように、enum
モジュールの Enum
クラスのように、1
から始まるデフォルト値で単純な列挙子クラスを実装できます。
class Zoo:
Lion, Tiger, Cheetah, Leopard = range(1, 5)
print Zoo.Lion
出力:
1