在 Python 中,枚举类型 (enum
) 可以让我们定义一组命名常量。默认情况下,枚举允许多个名称对应同一个值。例如,你可以定义 NORTH = 1
和 UP = 1
,它们都代表同一个值 1。
但在某些情况下,我们希望枚举值是唯一的,每个值只能由一个名称表示。例如,如果我们用枚举表示错误代码,那么每个错误代码都应该是唯一的,以避免混淆。
@unique 装饰器
为了确保枚举值唯一,Python 提供了 @unique
装饰器。这个装饰器可以用于任何枚举类定义,它会检查枚举中是否有重复的值。如果发现重复值,就会抛出 ValueError
异常。
@unique 的使用
使用 @unique
装饰器非常简单,只需要将其放在枚举类定义的上方即可。
from enum import Enum, unique
@unique
class Mistake(Enum):
ONE = 1
TWO = 2
THREE = 3
FOUR = 3 # 这行代码会导致 ValueError
完整示例
from enum import Enum, unique
@unique
class HTTPStatus(Enum):
OK = 200
CREATED = 201
BAD_REQUEST = 400
NOT_FOUND = 404
# 使用枚举成员
print(HTTPStatus.OK.value) # 输出 200
print(HTTPStatus(201)) # 输出 HTTPStatus.CREATED