• 人生苦短之Python枚举类型enum


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

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

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

    >>> 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.Oct: 10>, ',', 10)
    ('Nov', '=>', <Month.Nov: 11>, ',', 11)
    ('Dec', '=>', <Month.Dec: 12>, ',', 12)
    

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

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

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

    >>> print(Weekday.Fri)
    Weekday.Fri
    >>> print(Weekday(2))
    Weekday.Tue
    >>> a = Weekday(2)
    >>> print a
    Weekday.Tue
    >>>

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

  • 相关阅读:
    c/c++面试45-50之字符串
    c/c++面试39-44之内存动态分配
    使用spring配合Junit进行单元测试的总结
    使用springBoot进行快速开发
    配置项目使用weblogic的JNDI数据源
    转载-解决使用httpClient 4.3.x登陆 https时的证书报错问题
    SpringData JPA查询分页demo
    Lucene中的域选项
    代码片段,lucene基本操作(基于lucene4.10.2)
    配置maven使用nexus
  • 原文地址:https://www.cnblogs.com/dreamyu/p/7149352.html
Copyright © 2020-2023  润新知