Python の列挙型

Muhammad Waiz Khan 2023年1月30日
  1. Python で enum モジュールを使用したの列挙
  2. Python で通常のクラス構文を使用して列挙型を実装する
Python の列挙型

このチュートリアルでは、Python で列挙型を使用または実装するさまざまな方法を検討します。enum または列挙型は、数値型の名前付き定数のセットを表す特別な型のクラスです。enum タイプの各名前付き定数には独自の整数値があり、セットの名前付き定数の位置によって異なります。

enum 型は、C#、Java、Go、C、C++ などの多くのプログラミング言語で整数値のセットに定数名を割り当てるために使用されます。Python で列挙型を実装して使用するには、次のメソッドを使用します。以下に説明します。

Python で enum モジュールを使用したの列挙

Python の enum モジュールには、EnumIntEnumFlag、および 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