这里有新鲜出炉的 Python3 官方中文指南,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
下面小编就为大家带来一篇浅谈 Python 的枚举 Enum。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
枚举是常用的功能, 看看 Python 的枚举.
- from enum import Enum
- Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
枚举的定义
首先,定义枚举要导入 enum 模块。
枚举定义用 class 关键字,继承 Enum 类。
注意:
定义枚举时,成员名称不允许重复
默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名
如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员
如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器 @unique【要导入 unique 模块】
- for name, member in Month.__members__.items():
- print(name, '=>', member, ',', member.value)
我们就获得了 Month 类型的枚举类,可以直接使用 Month.Jan 来引用一个常量,或者枚举它的所有成员.
访问这些枚举类型可以有若干种方法:
枚举支持迭代器,可以遍历枚举成员
- >>> day1 = Weekday.Mon
- >>> print(day1)
- Weekday.Mon
- >>> print(Weekday.Tue)
- Weekday.Tue
- >>> print(Weekday['Tue'])
- Weekday.Tue
- >>> print(Weekday.Tue.value)
- >>> print(day1 == Weekday.Mon)
- True
- >>> print(day1 == Weekday.Tue)
- False
- >>> print(Weekday(1))
- Weekday.Mon
- >>> print(day1 == Weekday(1))
- True
- >>> Weekday(7)
- Traceback (most recent call last):
- ...
- ValueError: 7 is not a valid Weekday
- >>> for name, member in Weekday.__members__.items():
- ... print(name, '=>', member)
- ...
- Sun => Weekday.Sun
- Mon => Weekday.Mon
- Tue => Weekday.Tue
- Wed => Weekday.Wed
- Thu => Weekday.Thu
- Fri => Weekday.Fri
- Sat => Weekday.Sat
枚举取值 总结:
通过成员的名称来获取成员; 通过成员值来获取成员; 通过成员,来获取它的名称和值.
注意: Enum 的成员均为单例(Singleton),并且不可实例化,不可更改.
枚举是可以比较的:
举成员可进行同一性比较, 可进等值比较, 不能进行大小比较.
总结: Enum 可以把一组相关常量定义在一个 class 中,且 class 不可变,而且成员可以直接比较, 并且枚举有多钟实现方法。
以上这篇浅谈 Python 的枚举 Enum 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
(adsbygoogle = window.adsbygoogle || []).push({});
来源: http://www.phperz.com/article/17/0701/336685.html