枚举是给定的唯一值和常量值的一组标识符(成员)。在枚举内,可以通过身份比较成员。枚举对象也可以终止。
枚举模块定义以下类
枚举:用于创建枚举常量的基类。
IntEnum :用于创建枚举常量的基类,这些常量也是int的子类。
使用类语法创建枚举
#enumexample.py from enum import Enum class langs(Enum): Python = 1 Java = 2 Cpp = 3 Ruby = 4
枚举成员具有人类可读的字符串表示形式和repr表示形式。
>>> from enumexample import langs >>> print (langs.Python) langs.Python >>> print (repr(langs.Python)) <langs.Python: 1>
每个枚举成员都有名称和值属性。
>>> x = langs.Python >>> x.name 'Python' >>> x.value 1
您可以使用循环遍历所有成员。
>>> for lang in langs: print (lang.name, lang.value) Python 1 Java 2 Cpp 3 Ruby 4
可以借助值或身份来访问成员
>>> langs(3) <langs.Cpp: 3> >>> langs['Java'] <langs.Java: 2>
身份运算符是否可以用于比较枚举成员。
>>> x = langs(2) >>> y = langs(4) >>> x is y False
具有相同名称的两个枚举成员无效。但是,两个枚举成员可以具有相同的值。将enumexample.py更改为以下内容:
from enum import Enum class langs(Enum): Python = 1 Java = 2 Cpp = 3 Ruby = 4 Cplusplus = 3 >>> from enumexample import langs >>> langs.Cpp <langs.Cpp: 3> >>> langs.Cplusplus <langs.Cpp: 3> >>> langs(3) <langs.Cpp: 3>
默认情况下,枚举可以使用多个名称作为同一值的别名。为了确保唯一值,请使用@ enum.unique专门用于枚举的类装饰器。