Python 枚举

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程