python枚举法例题及解题思路,python枚举是什么意思

  python枚举法例题及解题思路,python枚举是什么意思

  枚举类型可以看作一个标签或者一组常量,通常用来表示一些特定的有限集,比如周、月、状态等。Python的内置类型中没有特殊的枚举类型,但是我们可以用很多方式实现它,比如字典和类:WEEKDAY={

   MON: 1,

  TUS:2,

  文:3,

  THU:4,

  星期五:5

  }

  类别颜色:

  红色=0

  绿色=1

  蓝色=2

  以上两种方法可以看作是简单枚举类型的实现。如果这样的枚举变量只在本地使用,没有问题,但问题是它们是可变的,也就是可以在其他地方修改,影响正常使用:WEEKDAY[MON]=WEEKDAY[FRI]

  打印(工作日)

  { 星期五:5, TUS: 2,星期一:5,文:3, THU: 4}

  类定义的枚举甚至可以实例化,变得不伦不类:

  c=颜色()

  印刷(红色)

  颜色。红色=2

  印刷(红色)

  0

  2

  当然也可以使用不可变类型,比如元组,但是这样就失去了枚举类型的初衷,标签就退化成了无意义的变量:COLOR=(R , G , B )

  打印(颜色[0],颜色[1],颜色[2])

  R G B

  为了提供更好的解决方案,Python通过PEP 435在3.4版本中增加了enum标准库,3.4之前的版本也可以通过pip install enum下载兼容的支持库。Enum提供了三个工具:Enum/IntEnum/unique,用法也很简单。可以通过继承Enum/IntEnum来定义枚举类型,其中IntEnum定义枚举成员必须是(或者可以转换成)整数类型,unique方法可以作为修饰符定义枚举成员的值不能重复:from enum import enum,IntEnum,unique。

  尝试:

  @唯一

  班级工作日(枚举):

  MON=1

  TUS=2

  文=3

  THU=4

  FRI=1

  除了值错误为e:

  打印(e)

  在以下位置发现重复值:星期五至星期一

  尝试:

  类别颜色(内部):

  红色=0

  绿色=1

  BLUE=b

  除了值错误为e:

  打印(e)

  基数为10的int()的文本无效:“b”

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: