python枚举类

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

猜你喜欢

转载自blog.csdn.net/Leo062701/article/details/82194067