python干货如何理解Python3

枚举:是一种基本数据类型而不是构造数据类型

枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。

使得程序的可读性和可维护性大大提高然而,很不幸,也许你习惯了其他语言中的枚举类型,但在Python3.4以前却并不提供。

关于要不要加人枚举类型的问题就引起了不少讨论,众多开发者曾提出增加枚举的建议,但被拒绝。于是人们充分利用Python的动态性这个特征想出了枚举的各种替代实现方式。(前辈们真的都是大神)

1.使用类属性。

2.借助函数

3.使用collections.namedtuplec

Python中枚举的替代实现方式远不止上述这些,在此就不一一列举了。那么,既然枚举在Python中有替代的实现方式。为什么人们还要执着地提出各自建议要求语言实现枚举呢?

显然这些替代实现有其不合理的地方。

(1)允许枚举值重复。

我们以collections.namedtuple为例,下面的例子中枚举值Spring与Autumn相等,但却不会提示任何错误。

(2)支持无意义的操作。

实际上2.7以后的版本还有另外一种替代选择:使用第三方模块flufl.enum,它包含两种枚举类:一种是Enum,只要保证枚举值唯一即可,对值的类型没限制;还有一种是IntEnum,其枚举值为int型。

可以直接使用value属性获取枚举元素的值,如:




转载请注明:http://www.aierlanlan.com/tzrz/3241.html