Python 中的列舉

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 enum 模組實現列舉型別
  2. 在 Python 中使用常規類語法實現列舉
Python 中的列舉

在本教程中,我們將研究在 Python 中使用或實現列舉的不同方法。enum 或列舉是一種特殊的類,表示一組數字型別的命名常量。enum 型別的每個命名常量都有其自己的整數值,該值取決於集合的命名常量位置。

在許多程式語言(例如 C#,Java,Go,C 和 C++ 等)中,enum 型別用於將常量名稱分配給整數值集。我們可以使用以下方法在 Python 中實現和使用列舉型別解釋如下。

在 Python 中使用 enum 模組實現列舉型別

Python 的 enum 模組具有四個類,即 enumIntEnumFlagIntFlag,有關該模組和類的更多詳細資訊,請參見這個連結

Enum 類中,預設情況下,每個名稱常量的值都是整數,但我們也可以傳遞資料型別,例如字串或浮點數等。顧名思義,IntEnum 類的名稱常量的值可以只能是整數。

我們可以使用 EnumIntEnum 類在 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

建立列舉數的另一種方法是使用類語法,然後傳遞 EnumIntEnum,如下面的示例程式碼所示:

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