以下是关于“Python 中enum的使用方法总结”的完整攻略。
什么是 enum
Enum
是一个枚举类,其实就是定义几个有固定值的变量。在程序中,经常会使用一些固定的参数或者变量,比如星期几、颜色、状态等等,这些参数是不能随便改变的,都必须是预先定义好的。英文单词 ENUM 是枚举的意思。Python 中,枚举类型是一个类,用于定义一组有名字的常量,可以降低常量定义带来的错误。
使用枚举,可以让代码更加规范化,增加代码的可读性,使代码更加易于维护。
enum 的基本使用方法
Python 3.4 引入了标准库 enum
模块,使用该模块可以方便地定义枚举类型。以下是一个最简单的使用示例:
import enum
class Color(enum.Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED) # 输出: Color.RED
在这个示例中,我们通过 class
关键字定义了一个名为 Color
的枚举类,它有三个枚举值:RED
、GREEN
、BLUE
。每个枚举值都是这个枚举类的实例。我们可以使用 print(Color.RED)
输出 Color.RED
,也就是这个枚举值的名称。
注意,在这个示例中,我们的 Color
继承了 enum.Enum
这个类。这个类提供了枚举类型的基本支持。
enum 常见用法
获取枚举值
如果我们想要获取枚举值的名称、值或者枚举成员的列表,可以使用以下方式:
import enum
class Color(enum.Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED.name) # 输出: RED
print(Color.RED.value) # 输出: 1
print(list(Color)) # 输出: [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]
在这里,我们使用了 name
属性来获取枚举成员的名称,使用 value
属性来获取对应枚举成员的值,而使用 list(Color)
则可以获取这个枚举类所有的枚举对象。
比较枚举值
我们可以使用运算符 ==
来比较两个枚举对象是否相等:
import enum
class Color(enum.Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED == Color.RED) # 输出: True
print(Color.RED == Color.BLUE) # 输出: False
定义值相等的枚举
枚举类型支持定义值相等的枚举成员:
import enum
class Color(enum.Enum):
RED = 1
GREEN = 2
BLUE = 1
print(Color.RED == Color.BLUE) # 输出: True
枚举成员可以是元组
在定义枚举成员时,可以使用元组来定义枚举值和枚举成员名称:
import enum
class Color(enum.Enum):
RED = (1, '红色')
GREEN = (2, '绿色')
BLUE = (3, '蓝色')
print(Color.RED.value)
print(Color.RED.value[0])
在这里,我们使用元组 (1, '红色')
来定义枚举成员 RED
。其中第一个元素 1
是枚举值,而第二个元素 '红色'
是枚举成员名称。如果我们想要获取这个枚举成员的值,可以使用 value
属性来获取,就像这个示例中的 Color.RED.value[0]
一样。
示例一
下面我们通过一个示例来更加深入地理解枚举类型的使用。在这个示例中,我们定义了一个名为 Gender
的枚举类型,枚举成员有男和女。同时,我们还定义了两个函数 is_male
和 is_female
来判断一个性别是否是男性或者女性:
import enum
class Gender(enum.Enum):
MALE = 1
FEMALE = 2
def is_male(gender):
return gender == Gender.MALE
def is_female(gender):
return gender == Gender.FEMALE
print(is_male(Gender.MALE)) # 输出: True
print(is_male(Gender.FEMALE)) # 输出: False
print(is_female(Gender.MALE)) # 输出: False
print(is_female(Gender.FEMALE)) # 输出: True
在这个示例中,我们使用 class
关键字定义了一个名为 Gender
的枚举类型,它有两个枚举值:MALE
、FEMALE
。我们还定义了两个函数 is_male
和 is_female
来判断一个性别是否是男性或者女性。最后通过调用这两个函数来验证代码功能的正确性。
示例二
在这个示例中,我们使用枚举类型来实现一个计算器。通过一个名为 Operation
的枚举类型来实现加减乘除四种运算,同时定义了四个函数 add
、subtract
、multiply
和 divide
来实现加减乘除的操作。最后调用了这四个函数来验证代码功能的正确性:
import enum
class Operation(enum.Enum):
ADD = 1
SUBTRACT = 2
MULTIPLY = 3
DIVIDE = 4
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
x = 10
y = 2
print(add(x, y)) # 输出: 12
print(subtract(x, y)) # 输出: 8
print(multiply(x, y)) # 输出: 20
print(divide(x, y)) # 输出: 5.0
print(add(x, y) == Operation.ADD) # 输出: False
print(add(x, y) == Operation.SUBTRACT) # 输出: False
print(add(x, y) == Operation.MULTIPLY) # 输出: True
print(add(x, y) == Operation.DIVIDE) # 输出: False
在这个示例中,我们使用了一个枚举类型 Operation
来实现加减乘除四种运算。在枚举类型中,我们定义了四种运算类型:ADD
、SUBTRACT
、MULTIPLY
、DIVIDE
。我们还定义了四个函数 add
、subtract
、multiply
、divide
,分别来实现加减乘除的操作。最后通过调用这四个函数来验证代码功能的正确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 中enum的使用方法总结 - Python技术站