Python 枚举
“枚举”一词指的是将一组字符串分配给固定常量值的过程,以便每个字符串可以通过与其绑定的值进行识别。Python的标准库提供了 枚举 模块。 枚举 模块中包含的Enum类被用作定义一组标识符的枚举的父类 – 惯例上以大写形式书写。
示例1
from enum import Enum
class subjects(Enum):
ENGLISH = 1
MATHS = 2
SCIENCE = 3
SANSKRIT = 4
在上面的代码中,”subjects”是枚举类型。它有不同的枚举成员,例如,subjects.MATHS。每个成员都被赋予一个值。
每个成员都是枚举类subjects的一个对象,具有名称和值属性。
obj = subjects.MATHS
print (type(obj), obj.value)
它导致以下的 输出 −
<enum 'subjects'> 2
示例2
绑定到枚举成员的值不一定总是一个整数,也可以是一个字符串。请参考以下示例 –
from enum import Enum
class subjects(Enum):
ENGLISH = "E"
MATHS = "M"
GEOGRAPHY = "G"
SANSKRIT = "S"
obj = subjects.SANSKRIT
print (type(obj), obj.name, obj.value)
它将会产生以下的 输出 −
<enum 'subjects'> SANSKRIT S
示例3
您可以使用 for 循环按照其在定义中出现的顺序迭代枚举成员-
for sub in subjects:
print (sub.name, sub.value)
它将产生以下 输出 −
ENGLISH E
MATHS M
GEOGRAPHY G
SANSKRIT S
枚举成员可以通过其分配的唯一值或其名称属性进行访问。因此,subjects(“E”)和subjects[“ENGLISH”]都会返回subjects.ENGLISH成员。
示例4
枚举类不能有重复出现的成员,但可以为多个成员分配相同的值。为确保每个成员都有一个唯一的值绑定到它上面,请使用@unique修饰符。
from enum import Enum, unique
@unique
class subjects(Enum):
ENGLISH = 1
MATHS = 2
GEOGRAPHY = 3
SANSKRIT = 2
这将引发如下异常−
@unique
^^^^^^
raise ValueError('duplicate values found in %r: %s' %
ValueError: duplicate values found in <enum 'subjects'>: SANSKRIT -> MATHS
Enum类是一个可调用类,因此您可以使用以下另一种定义枚举的方法 –
from enum import Enum
subjects = Enum("subjects", "ENGLISH MATHS SCIENCE SANSKRIT")
构造 Enum 在这里使用了两个参数。第一个参数是枚举的名称。第二个参数是一个由枚举成员符号名称组成的字符串,用空格分隔。