Python 中的 Enum 类

2025 年 1 月 11 日 | 阅读 5 分钟

什么是枚举?

Python 中的枚举(Enum,"enumeration" 的缩写)是一组唯一、常量值的符号名称。它允许您定义一组相关的、比使用普通整数或字符串更具可读性和可维护性的值。当一个变量只能取一组有限的可能值之一时,就会使用枚举,这使得您的代码更具描述性,并减少了出错的可能性。

在 Python 中,`enum` 模块提供了创建枚举的支持。枚举类是通过继承 `enum.Enum` 来创建的。枚举的每个成员都定义为类属性,并且每个属性都被分配了一个唯一的值。这些值可以是整数、字符串,甚至是元组。

当您有一组需要分组的常量时,枚举特别有用,例如一周中的某几天、进程的状态或项目的类别。枚举还支持比较操作,通过避免硬编码值,可以帮助编写更简洁的代码。例如,您可以使用 `==` 运算符来分析一周中的两天,它的工作方式符合预期。

例如,您可以使用 `==` 运算符来分析一周中的两天,它的工作方式符合预期。

枚举的特性

  1. 唯一性:枚举的每个成员都有一个唯一的值,确保没有两个成员共享相同的值,除非明确定义。
  2. 不可变性:枚举成员是常量,意味着一旦设置,它们的值就不能被更改。
  3. 类型安全:枚举为处理一组相关值提供了一种类型安全的方式,可以防止意外的误用或与不相关类型的比较。
  4. 描述性名称:枚举通过使用描述性名称而不是任意数字或字符串,可以实现更具可读性和可维护性的代码。
  5. 迭代:枚举可以被迭代,允许在循环中轻松访问所有成员。

示例:用于创建枚举的枚举类

输出

The member of Enum class as the string is : Weekdays.Monday
The member of Enum class as a repr is : 
The type of the member of Enum class is : 
The name of the member of Enum class is : Friday

示例 2:如何打印枚举作为可迭代列表

用户可以像可迭代列表一样打印枚举类。

在下面的示例中,我们将使用 `for` 循环来打印枚举类的所有成员。

代码

输出

The member of Enum class are : 
Weekdays.Sunday
Weekdays.Monday
Weekdays.Tuesday
Weekdays.Wednesday
Weekdays.Thursday
Weekdays.Friday
Weekdays.Saturday

示例 3:如何哈希枚举类

枚举类的成员被称为枚举,并且也是可哈希的。因此,这些成员可以用于集合和字典。

代码

输出

Enum class is hashed

示例 4:如何访问枚举成员

用户可以通过成员项的值或名称来访问枚举类的成员。枚举的名称用作索引。

代码

输出

The member of Enum class accessed by name: 
Days.Monday
The member of Enum class accessed by name: 
Days.Friday
The member of Enum class accessed by Value: 
Days.Sunday
The member of Enum class accessed by Value: 
Days.Thursday

示例 5:如何比较枚举

为了比较枚举,我们使用以下方法:

  1. 使用 "==" 和 "!=" 运算符
  2. 使用 "is" 运算符
  3. 使用 "in" 运算符

代码

输出

Match
Do not Match
Match
Do not Match

结论

在本文中,我们探讨了 Python 中的枚举类,它允许我们在代码中定义和使用枚举。通过使用枚举,我们可以使代码更具凝聚力,不易出错,同时还提供了额外的类型安全性。