前言
在 Python 中,枚举(Enum)是一种数据类型,它允许你定义一组命名的常量。
枚举在需要表示一组固定选项的场景中非常有用,比如 days of the week、status codes 等。
Python 的标准库提供了 enum
模块,其中包含几种不同的枚举类型,最常用的是 Enum
和 IntEnum
。
使用 Enum
首先,你需要导入 enum
模块:
1 | from enum import Enum |
数字枚举
1 | class Weekday(Enum): |
Weekday
是一个枚举类,其中定义了七个枚举成员,分别代表一周中的每一天,每个成员都有一个唯一的整数值。
字符串枚举
1 | class Color(Enum): |
访问枚举成员
名称与值
访问名称:
Weekday.MONDAY.name
-> “MONDAY”访问值:
Weekday.MONDAY.value
-> 1
你可以通过枚举类名和成员名来访问枚举成员:
1 | print(Weekday.MONDAY) # 输出: Weekday.MONDAY |
你也可以通过值来获取枚举成员:
1 | print(Weekday(1)) # 输出: Weekday.MONDAY |
遍历枚举成员
你可以使用 Enum
类的 __members__
属性来遍历所有的枚举成员:
1 | for day in Weekday: |
输出:
1 | Weekday.MONDAY |
比较枚举成员
枚举成员是单例实例,因此你可以使用 ==
进行比较:
1 | if Weekday.MONDAY == Weekday(1): |
输出:
1 | True |
自定义枚举方法
你可以在枚举类中定义方法:
1 | class Planet(Enum): |
然后,你可以使用这些方法:
1 | print(Planet.EARTH.get_description()) # 输出: habitable |
使用 IntEnum
如果你需要一个枚举类,其成员是整数,并且可以与整数进行比较,可以使用 IntEnum
:
1 | from enum import IntEnum |
IntEnum
允许与整数进行比较:
1 | print(Weekday.MONDAY == 1) # 输出: True |
什么是 IntEnum
,它与 Enum
有什么不同?
答案:
IntEnum
是Enum
的子类,其成员是整数类型。IntEnum
允许与整数进行比较和运算,而Enum
不行。