Python-枚举


术语“枚举”是指将固定常量值分配给一组字符串的过程,以便每个字符串都可以通过与其绑定的值来识别。Python 的标准库提供了enum模块。enum模块中包含的 Enum 类用作父类来定义一组标识符的枚举 - 通常以大写形式编写。

实施例1

from enum import Enum class subjects(Enum): ENGLISH = 1 MATHS = 2 SCIENCE = 3 SANSKRIT = 4

在上面的代码中,“subjects”是枚举。它有不同的枚举成员,例如,subject.MATHS。每个成员都被分配一个值。

每个成员都是枚举类subject的ab对象,并具有name和value属性。

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构造函数在这里使用两个参数。第一个是枚举的名称。第二个参数是一个由枚举成员符号名称组成的字符串,以空格分隔。