Python 中的枚举

Muhammad Waiz Khan 2023年1月30日 2021年3月21日
  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