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中关于list与numpy.ndarry切片两者的对比详解

Python字典有set方法吗

Python和r哪个更难

了解 flask 项目结构

Python怎么读取csv文件

Python不可变数据类型有哪些

最有用的Python经典书籍推荐

Python表达式是什么

哪个手机软件有Python题库

Python工资为什么这么高

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




打赏

取消

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

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

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

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

评论

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