Python中枚举类型的详解(代码示例)


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

本篇文章给大家带来的内容是关于Python中枚举类型的详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Python 的原生类型中并不包含枚举类型。为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库。

枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。在没有专门提供枚举类型的时候我们是怎么做呢,一般就通过字典或类来实现:

1

2

3

4

5

6

7

8

9

Color = {

    'RED'  : 1,

    'GREEN': 2,

    'BLUE' : 3,

}

class Color:

    RED   = 1

    GREEN = 2

    BLUE  = 3

这种来实现枚举如果小心翼翼地使用当然没什么问题,毕竟是一种妥协的解决方案。它的隐患在于可以被修改。

使用 Enum

更好的方式是使用标准库提供的 Enum 类型,官方库值得信赖。3.4 之前的版本也可以通过 pip install enum 下载支持的库。简单的示例:

1

2

3

4

5

from enum import Enum

class Color(Enum):

    red = 1

    green = 2

    blue = 3

枚举成员有值(默认可重复),枚举成员具有友好的字符串表示:

1

2

3

4

5

6

7

8

>>> print(Color.red)

Color.red

>>> print(repr(Color.red))

<Color.red: 1>

>>> type(Color.red)

<Enum 'Color'>

>>> isinstance(Color.green, Color)

True

枚举类型不可实例化,不可更改。

定义枚举

定义枚举时,成员名不允许重复

1

2

3

4

class Color(Enum):

    red = 1

    green = 2

    red = 3    # TypeError: Attempted to reuse key: 'red'

成员值允许相同,第二个成员的名称被视作第一个成员的别名

1

2

3

4

5

6

7

8

9

class Color(Enum):

    red   = 1

    green = 2

    blue  = 1

 

print(Color.red)              # Color.red

print(Color.blue)             # Color.red

print(Color.red is Color.blue)# True

print(Color(1))               # Color.red  在通过值获取枚举成员时,只能获取到第一个成员

若要不能定义相同的成员值,可以通过 unique 装饰

阅读剩余部分

相关阅读 >>

Python实现自动刷博客浏览量经验分享

pandas 最详细教程

Python语言有哪些数据类型

Python中字符串数组如何逆序排列

怎么把pycharm卸载干净

2018年最火的七个Python图形化gui开发框架

Python如何批量读取图片

Python元祖与字典以及集合的实例讲解

Python ord()是什么?ord()有什么用?

Python如何遍历list

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




打赏

取消

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

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

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

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

评论

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