什么是枚举python


本文摘自php中文网,作者silencement,侵删。

枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们可以通过很多方法来实现它,例如字典、类等:

1

2

3

4

5

6

7

8

9

10

11

WEEKDAY = {

  'MON': 1,

  'TUS': 2,

  'WEN': 3,

  'THU': 4,

  'FRI': 5

  }

  class Color:

  RED = 0

  GREEN = 1

  BLUE = 2

上面两种方法可以看做是简单的枚举类型的实现,如果只在局部范围内用到了这样的枚举变量是没有问题的,但问题在于它们都是可变的(mutable),也就是说可以在其它地方被修改从而影响其正常使用:

1

2

3

4

5

6

7

8

9

10

WEEKDAY['MON'] = WEEKDAY['FRI']

  print(WEEKDAY)

  {'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4}

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

  c = Color()

  print(c.RED)

  Color.RED = 2

  print(c.RED)

  0

  2

当然也可以使用不可变类型(immutable),例如元组,但是这样就失去了枚举类型的本意,将标签退化为无意义的变量:

1

2

3

COLOR = ('R', 'G', 'B')

  print(COLOR[0], COLOR[1], COLOR[2])

  R G B

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

from enum import Enum, IntEnum, unique 

     try:

  @unique

  class WEEKDAY(Enum):

  MON = 1

  TUS = 2

  WEN = 3

  THU = 4

  FRI = 1

  except ValueError as e:

  print(e)

  duplicate values found in : FRI -> MON

  try:

  class Color(IntEnum):

  RED = 0

  GREEN = 1

  BLUE = 'b'

  except ValueError as e:

  print(e)

  invalid literal for int() with base 10: 'b'

以上就是什么是枚举python的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

pycharm怎么用Python

Python是免费软件吗

Python建议每行最多容纳多少字符

Python如何删除txt文件

Python如何连接mysql

tensorflow入门使用 tf.train.saver()保存模型

Python复制中对象生命周期如何使用

Python如何设置曲线样式

为什么Python没有idle

初学者编写Python用什么软件

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...