python 枚举(enum)
Python 中的枚举是指将一组具有名称的常量定义为一个枚举类型,并限制变量只能取枚举类型中的值。Python 3.4 版本之后,引入了 enum
模块来支持枚举类型。
使用枚举有以下优点:
枚举类不允许定义相同枚举名称,但不同的枚举名称可以有相同的值,后者相当于前者的别名。
枚举值不能被修改,枚举值一旦被修改,就会引发AttributeError异常。
两个不同的枚举类,枚举名称和枚举值即便相同,在比较时也是不相等的。
枚举类的一个枚举有name(标签)和value(枚举值)两个属性,使用枚举值时,务必通过value获取枚举值。
枚举应用场景
枚举使用与枚举值比较
下面是一个简单的示例代码,演示如何使用 enum
定义一个枚举类型:
import enum
# 定义一个枚举类型,标识颜色
class Color(enum.Enum):
RED = 1
GREEN = 2
BLUE = 3
# 使用枚举类型
print(Color.RED) # 输出:Color.RED
print(Color.GREEN) # 输出:Color.GREEN
print(Color.BLUE) # 输出:Color.BLUE
# 枚举类型还可以用于比较操作
print(Color.RED == Color.GREEN) # 输出:False
print(Color.RED == Color.RED) # 输出:True
在上面的代码中,我们首先定义了一个枚举类型 Color
,包含三个常量:RED
、GREEN
和 BLUE
。然后我们分别使用枚举类型输出了这三种颜色,并演示了如何进行比较操作。
枚举值取值
另外,还可以使用枚举类型的方法 name
和 value
分别获取枚举常量的名称和值:
枚举类的一个枚举有name(标签)和value(枚举值)两个属性,使用枚举值时,务必通过value获取枚举值。
# 使用枚举类型的方法获取常量名称和值
print(Color.RED.name) # 输出:RED
print(Color.RED.value) # 输出:1
枚举值遍历
# 自定义枚举类型的值
class Fruit(enum.Enum):
APPLE = 1
BANANA = 2
ORANGE = 3
GRAPE = 'grape'
# 输出枚举类型中每个常量的名称和值
for fruit in Fruit:
print(f"{fruit.name}: {fruit.value}")
# 输出
APPLE: 1
BANANA: 2
ORANGE: 3
GRAPE: grape
Process finished with exit code 0
在上面的代码中,我们定义了一个枚举类型 Fruit
,其中 GRAPE
的值为字符串 'grape'。演示了如何遍历枚举类型中每个常量,并输出它的名称和值。
总之,Python 中的枚举可以用于更好地组织程序代码,提高代码可读性和可维护性,并降低参数传递错误的风险。
使用for循环可以对枚举值进行遍历,枚举有name和value两个属性,name就是枚举类的类属性,value则是类属性的值。
枚举值唯一
枚举值理论上是允许重复的,如果不希望出现枚举值重复的情况,可以使用enum模块提供的unique装饰器
import enum
from enum import unique
@unique
class ColorCode(enum.Enum):
RED = 1
BLUE = 1
BLACK = 3
如果枚举值出现了重复的情况,由于有unique装饰器修饰,在执行时会报错。
评论