• 周三. 4月 24th, 2024

python 枚举类型的详细使用方法

城主

12月 26, 2022 ,

枚举类型是 Python 中的一种数据类型,它用于定义一组有名字的常量。枚举的主要用途是使用有意义的名称来代替数字,以便代码可读性更高。

在 Python 中,可以使用 enum 模块来创建枚举类型。例如,下面的代码创建了一个名为 Color 的枚举类型,其中包含了三个枚举值:





import enum

class Color(enum.Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

您可以使用枚举值的名称来引用它们,例如:





print(Color.RED)

输出:





Color.RED

也可以使用枚举值的值来引用它们,例如:





print(Color(1))

输出:





Color.RED

还可以使用 in 关键字来检查枚举值是否在枚举类型中:





print(Color.RED in Color)
print(Color.PURPLE in Color)

输出:





True
False

另外,还可以使用 .name.value 属性来访问枚举值的名称和值:





print(Color.RED.name)
print(Color.RED.value)

输出:





RED
1

在 Python 中,您还可以使用类来创建枚举类型。例如,下面的代码创建了一个名为 Shape 的枚举类型,其中包含了三个枚举值:





class Shape:
    CIRCLE = "circle"
    SQUARE = "square"
    TRIANGLE = "triangle"

使用方法与 enum 模块类似。例如,您可以使用名称或值来引用枚举值:





print(Shape.CIRCLE)
print(Shape["SQUARE"])

输出:





circle
square

您还可以使用 in 关键字来检查枚举值是否在枚举类型中:





print(Shape.CIRCLE in Shape)
print(Shape.DIAMOND in Shape)

输出:





True
False

注意,使用类创建枚举类型时,枚举值不是类的实例,因此无法使用实例方法或属性访问枚举值。

另外,还有一种使用更简单的方法来创建枚举类型,即使用 Python 3.4 引入的 Enum 类。例如,下面的代码创建了一个名为 Size 的枚举类型,其中包含了三个枚举值:





from enum import Enum

class Size(Enum):
    SMALL = 1
    MEDIUM = 2
    LARGE = 3

使用方法与 enum 模块类似。例如,您可以使用名称或值来引用枚举值:





print(Size.SMALL)
print(Size(2))

使用 Enum 类创建的枚举类型还支持一些额外的功能,例如自定义枚举值的名称和值:





from enum import Enum

class Size(Enum):
    SMALL = "S"
    MEDIUM = "M"
    LARGE = "L"

您还可以在枚举值上定义方法:





from enum import Enum

class Size(Enum):
    SMALL = "S"
    MEDIUM = "M"
    LARGE = "L"
    
    def describe(self):
        return f"Size is {self.value}"

print(Size.SMALL.describe())

输出:





Size is S

您还可以使用 @unique 装饰器来限制枚举类型中的枚举值不能有重复的值:





from enum import Enum, unique

@unique
class Size(Enum):
    SMALL = "S"
    MEDIUM = "M"
    LARGE = "L"

如果您尝试添加具有重复值的枚举值,将引发 ValueError 异常:





from enum import Enum, unique

@unique
class Size(Enum):
    SMALL = "S"
    MEDIUM = "M"
    LARGE = "L"
    XLARGE = "L"  # ValueError: duplicate values found in <enum 'Size'>: L

枚举类型可以用于在代码中使用有意义的名称来表示常量。例如,在处理图形时,可以使用枚举类型来表示图形的类型:





from enum import Enum

class ShapeType(Enum):
    CIRCLE = "circle"
    SQUARE = "square"
    TRIANGLE = "triangle"

class Shape:
    def __init__(self, shape_type: ShapeType):
        self.shape_type = shape_type

shape = Shape(ShapeType.CIRCLE)
print(shape.shape_type)

输出:





ShapeType.CIRCLE

使用枚举类型可以使代码更具可读性,因为使用有意义的名称来表示常量会比使用数字更容易理解。

阅读  Python 装饰器的详细使用方法

此外,枚举类型还可以用于定义一组选项,例如,可以使用枚举类型定义一组可用的颜色:





from enum import Enum

class Color(Enum):
    RED = "red"
    GREEN = "green"
    BLUE = "blue"

def set_background_color(color: Color):
    # set the background color to the specified color
    pass

set_background_color(Color.GREEN)

使用枚举类型可以限制函数的输入参数,确保只能传入有效的颜色。

总的来说,枚举类型是一种很有用的数据类型,可以帮助您在代码中使用有意义的名称表示常量,并提高代码的可读性。