您好,欢迎访问一九零五行业门户网

Python 的枚举 Enum

枚举是常用的功能,看看python的枚举.
from enum import enum month = enum('month', ('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'))
@uniqueclass weekday(enum):     sun = 0 # sun的value被设定为0     mon = 1tue = 2wed = 3thu = 4fri = 5sat = 6
for name, member in month.__members__.items():     print(name, '=>', member, ',', member.value)

枚举的定义
首先,定义枚举要导入enum模块。
枚举定义用class关键字,继承enum类。
注意:
定义枚举时,成员名称不允许重复 
默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名 
 如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员
 如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】

for name, member in month.__members__.items():     print(name, '=>', member, ',', member.value)


我们就获得了month类型的枚举类,可以直接使用month.jan来引用一个常量,或者枚举它的所有成员.
访问这些枚举类型可以有若干种方法:
枚举支持迭代器,可以遍历枚举成员
>>> day1 = weekday.mon>>> print(day1) weekday.mon>>> print(weekday.tue) weekday.tue>>> print(weekday['tue']) weekday.tue>>> print(weekday.tue.value)2>>> print(day1 == weekday.mon) true>>> print(day1 == weekday.tue) false>>> print(weekday(1)) weekday.mon>>> print(day1 == weekday(1)) true>>> weekday(7) traceback (most recent call last):   ... valueerror: 7 is not a valid weekday>>> for name, member in weekday.__members__.items(): ...     print(name, '=>', member) ... sun => weekday.sun mon => weekday.mon tue => weekday.tue wed => weekday.wed thu => weekday.thu fri => weekday.fri sat => weekday.sat
枚举取值 总结:
通过成员的名称来获取成员;通过成员值来获取成员;通过成员,来获取它的名称和值.
注意: enum 的成员均为单例(singleton),并且不可实例化,不可更改.
枚举是可以比较的:
举成员可进行同一性比较,可进等值比较,不能进行大小比较.
总结:enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较,并且枚举有多种实现方法。
以上就是python 的枚举 enum的详细内容。
其它类似信息

推荐信息