Python3 新增加的数据类型:枚举 enum

简介: Python3 新增加的数据类型:枚举 enum

C 语言中有枚举类型的,其定义如下:

enum cColor{ cBlack=0,cNavy,cGreen,cTeal,cMaroon,cPurple, cOlive, cSliver,
       cGray,   cBlue,cLime, cCyan,cRed,   cMagenta,cYellow,cWhite };

Python3.4之前的版本是没有枚举类型的,通常会用全局变量、字典等来代替。但枚举应该是常量,用变量代之可能会被一不小心变更了定值。之前也可能存在第三方库的enum模块。


现在python3.4版本后,enum已加入了标准库行列,导入方法: from enum import Enum




枚举用法:


本质是一个类,定义声明后都是 Enum 的子类。

>>> from enum import Enum
>>> class COLOR(Enum):
  BLACK = 0
  GRAY = 8
  GREY = 8
  BLUE = 9
  RED = 12
  WHITE = 16
>>> COLOR.BLACK
<COLOR.BLACK: 0>
>>> COLOR.GRAY
<COLOR.GRAY: 8>
>>> COLOR.GREY
<COLOR.GRAY: 8>
>>> COLOR.GREY.name
'GRAY'
>>> COLOR.GREY.value
8
>>> 

注: 枚举一般不允许有重复值,有重值也不会报错。如上例中,第二个值的枚举常量GREY只是作为前一个常量GRAY的别名使用。正常的遍历也读不到别名 GREY:

>>> [c.value for c in COLOR]
[0, 8, 9, 12, 16]
>>> [c.name for c in COLOR]
['BLACK', 'GRAY', 'BLUE', 'RED', 'WHITE']
>>> 


Enum有个只读属性__member__,可以用它来遍历出别名 GREY:

>>> COLOR.__members__
mappingproxy({'BLACK': <COLOR.BLACK: 0>, 'GRAY': <COLOR.GRAY: 8>, 'GREY': <COLOR.GRAY: 8>, 
'BLUE': <COLOR.BLUE: 9>, 'RED': <COLOR.RED: 12>, 'WHITE': <COLOR.WHITE: 16>})
>>> COLOR.__members__.items()
dict_items([('BLACK', <COLOR.BLACK: 0>), ('GRAY', <COLOR.GRAY: 8>), ('GREY', <COLOR.GRAY: 
8>), ('BLUE', <COLOR.BLUE: 9>), ('RED', <COLOR.RED: 12>), ('WHITE', <COLOR.WHITE: 16>)])
>>> COLOR.__members__.values()
dict_values([<COLOR.BLACK: 0>, <COLOR.GRAY: 8>, <COLOR.GRAY: 8>, <COLOR.BLUE: 9>, 
<COLOR.RED: 12>, <COLOR.WHITE: 16>])
>>> COLOR.__members__.keys()
dict_keys(['BLACK', 'GRAY', 'GREY', 'BLUE', 'RED', 'WHITE'])
>>> [c for c in COLOR.__members__.keys()]
['BLACK', 'GRAY', 'GREY', 'BLUE', 'RED', 'WHITE']
目录
相关文章
|
5月前
|
人工智能 Python
python基本数据类型简介
本文简要介绍了Python的基本数据类型,包括整型、浮点型、字符串、列表、字典和布尔类型,帮助读者对Python数据类型有初步了解。
205 0
|
5月前
|
存储 安全 开发者
Python中的数据类型详解
Python是一种动态类型编程语言,具备丰富的数据类型,包括数值类型、序列类型、映射类型和集合类型等。这些类型为高效编程提供了强大支持。
205 0
|
7月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
180 26
|
8月前
|
Python
探索Python的各式数据类型
以上就是Python数据类型的一次简单而有趣的游览。和她继续接触,你会发现她还有更多有趣的面象,例如集合里的冰冻集合(Frozenset),序列里的字符串(String)和字节序列(Bytes)等等。希望这次游览能对你有所启发,让你更好地理解和使用Python。
112 21
|
8月前
|
存储 程序员 Python
Python 变量和简单数据类型
本文介绍了 Python 编程的基础知识,从创建第一个 Python 文件 `hello_world.py` 开始,讲解了 Python 文件的运行机制及解释器的作用。接着深入探讨了变量的定义、命名规则和使用方法,并通过示例说明如何修改变量值。同时,文章详细解析了字符串的操作,包括大小写转换、变量插入及空白字符处理等技巧。此外,还涵盖了数字运算(整数与浮点数)、常量定义以及注释的使用。最后引用了《Python 之禅》,强调代码设计的美学原则和哲学思想。适合初学者快速掌握 Python 基础语法和编程理念。
187 5
|
Python
Python中不同数据类型之间如何进行转换?
Python中不同数据类型之间如何进行转换?
414 62
|
存储 开发者 Python
Python 的数据类型
Python 的数据类型
278 61
|
Python
Python 中一些常见的数据类型
Python 中一些常见的数据类型
597 8
|
Python
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
本篇将详细介绍Python中的常见数据类型转换方法以及 `NoneType` 的概念。包括如何在整数、浮点数、字符串等不同数据类型之间进行转换,并展示如何使用 `None` 进行初始赋值和处理特殊情况。通过本篇的学习,用户将深入理解如何处理不同类型的数据,并能够在代码中灵活使用 `None` 处理未赋值状态。
205 2
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
|
编译器 数据安全/隐私保护 Python
Python--基本数据类型
【10月更文挑战第4天】
189 5

推荐镜像

更多