python中枚举有多种实现方式,如元组、全局变量(类似于c语言的宏)、枚举类等。个人感觉枚举类最易用,也最规范。
枚举类的定义与使用说明如下:
(1)从enum中导入Enum类,以继承Enum类;
(2)成员名称不允许重复,但值可以重复,相当于别名;值重复时,通过值只能取到第一个成员;
(3)若要限制值不可重复,需增加装饰器@unique;
(4)成员可进行同一性比较,但不可进行大小比较。
如下的测试代码中,STR、INT是枚举的名称,其后的1、2是枚举的值。
可通过XXX.__members__.values()取枚举的所有值,通过XXX.__members__.items()取枚举的所有名称、值对。
测试代码:
from enum import Enum, unique
@unique
class TLV_TAG(Enum):
STR = 1
INT = 2
# 取枚举的所有值
print(TLV_TAG.__members__.values())
# 判读一个枚举值是否属于该枚举
print(TLV_TAG.STR in TLV_TAG.__members__.values())
# 判断1是否数据枚举,输出为false,表明values()取到的是枚举成员,并不是成员的值
print(1 in TLV_TAG.__members__.values())
# 也可通过值来取枚举项
print(TLV_TAG(1))
# 数据成员的名称、值
print(TLV_TAG.STR.name, ' <---> ', TLV_TAG.STR.value)
# 遍历
for name, value in TLV_TAG.__members__.items():
print(name, ' ==> ', value)
输出
odict_values([<TLV_TAG.STR: 1>, <TLV_TAG.INT: 2>])
True
False
TLV_TAG.STR
STR <---> 1
STR ==> TLV_TAG.STR
INT ==> TLV_TAG.INT
扫描二维码关注公众号,回复:
2964569 查看本文章