python 枚举类

和其他语言一样,python也是有枚举类的。

首先我们需要引入python包enum

from enum import Enum

接下来我们声明一个枚举类

myMonth = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'));

这样我们就声明了一个名叫myMonth的枚举类,而Month则是一个标签。

我们可以通过类名.元素名的方式获取其中的元素。

例如:

print(myMonth.Jan);

得到的结果就是标签名.元素名:

Month.Jan

而如果我们想得到具体的int值的话,则需要使用

print(myMonth.Jan.value);

得到的结果就是

1

我们也可以通过__members__.items()方法获取枚举中的所有元素:

print(list(myMonth.__members__.items()));

需要注意的是返回值是一个键值对:

[('Jan', <Month.Jan: 1>), ('Feb', <Month.Feb: 2>), ('Mar', <Month.Mar: 3>),
 ('Apr', <Month.Apr: 4>), ('May', <Month.May: 5>), ('Jun', <Month.Jun: 6>),
 ('Jul', <Month.Jul: 7>), ('Aug', <Month.Aug: 8>), ('Sep', <Month.Sep: 9>),
 ('Oct', <Month.Oct: 10>), ('Nov', <Month.Nov: 11>), ('Dec', <Month.Dec: 12>)]

所以如果需要使用for循环来遍历的话需要写成:

for name, member in myMonth.__members__.items():
    print(name, ',', member, ',', member.value);

输出为:

Jan , Month.Jan , 1
Feb , Month.Feb , 2
Mar , Month.Mar , 3
Apr , Month.Apr , 4
May , Month.May , 5
Jun , Month.Jun , 6
Jul , Month.Jul , 7
Aug , Month.Aug , 8
Sep , Month.Sep , 9
Oct , Month.Oct , 10
Nov , Month.Nov , 11
Dec , Month.Dec , 12

 

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据