Python 中的枚举
在本教程中,我们将研究在 Python 中使用或实现枚举的不同方法。enum
或枚举是一种特殊的类,表示一组数字类型的命名常量。enum
类型的每个命名常量都有其自己的整数值,该值取决于集合的命名常量位置。
在许多编程语言(例如 C#,Java,Go,C 和 C++ 等)中,enum
类型用于将常量名称分配给整数值集。我们可以使用以下方法在 Python 中实现和使用枚举类型解释如下。
在 Python 中使用 enum
模块实现枚举类型
Python 的 enum
模块具有四个类,即 enum
,IntEnum
,Flag
和 IntFlag
,有关该模块和类的更多详细信息,请参见这个链接。
在 Enum
类中,默认情况下,每个名称常量的值都是整数,但我们也可以传递数据类型,例如字符串或浮点数等。顾名思义,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