枚举类型enum

╄→гoц情女王★ 提交于 2019-11-27 09:32:18

枚举类型enum是比较重要的一个数据类型,它是一种数据类型而不是数据结构,我们通常将一组常用的常数声明成枚举类型方便后续的使用。当一个变量有几种可能的取值的时候,我们将它定义为枚举类型。在Python中是如何实现的呢?

      补充:很多初学者一下子不明白枚举是什么意思,比如我们有段程序很多地方需要用到12个月月份,可以将每个月份都定义出来使用: String Jan = "1月份",但是这样用起来很不好用,需要写12个,然后后续用的时候也不清晰明白,那么枚举类型就可以解决问题,它将这12个月份罗列出来,然后每个月份对应一个值(从0到...),我们用的时候可以直接用声明的枚举类型带出来我们想要的值。

      我们声明一个月份的枚举类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> from enum import Enum
>>> Month = Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
>>> for name,member in Month.__members__.items():
    print(name,'=>',member,',',member.value)
 
     
('Jan''=>', <Month.Jan: 1>, ','1)
('Feb''=>', <Month.Feb: 2>, ','2)
('Mar''=>', <Month.Mar: 3>, ','3)
('Apr''=>', <Month.Apr: 4>, ','4)
('May''=>', <Month.May: 5>, ','5)
('Jun''=>', <Month.Jun: 6>, ','6)
('Jul''=>', <Month.Jul: 7>, ','7)
('Aug''=>', <Month.Aug: 8>, ','8)
('Sep''=>', <Month.Sep: 9>, ','9)
('Oct''=>', <Month.Oct10>, ','10)
('Nov''=>', <Month.Nov: 11>, ','11)
('Dec''=>', <Month.Dec: 12>, ','12)

        首先导入enum模块,然后声明枚举类型名及它的可能取值。还有一种方式我们定义Enum子类来定义一个枚举类。

1
2
3
4
5
6
7
8
9
10
>>> from enum import Enum,unique
>>> @unique
class Weekday(Enum):
    Sun = 0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6

      @unique这个装饰器是帮我们检查是否有重复的值。取出枚举类型里面的值也是多种多样的。

1
>>> print(Weekday.Fri)<br>Weekday.Fri<br>>>> print(Weekday(2))<br>Weekday.Tue<br>>>> a = Weekday(2)<br>>>> print a<br>Weekday.Tue<br>>>>

       从最后一个也可以看出定义枚举类和定义普通的类是有区别的,开头也说了枚举类型就是一组常量,我们就是为了以后方便使用将一组可能取值的常量放到一个地方,根据需要将值取出来。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!