python——枚举

简介: python——枚举

枚举

枚举可看作是一系列符号名称的集合,集合中每一个元素要保证唯一性和不可变,因此我们可以对枚举中元素进行恒等比较,通俗来讲枚举就是一系列常量的集合,枚举是可迭代的。

作用

常用的做法是采用变量名大写的方式来定义,这种方式虽然简单,但问题在于我们定义的仍然是变量、是可以被修改的,而常量是什么呢?简单来说就是不可变的量,枚举就有不可变的特性,所以枚举的主要作用就是用来定义常量的。

创建

枚举语法与 class 语法相同,之前我们在Python 基础(十一):面向对象中已经介绍过 class 了,枚举的定义可以通过继承 Enum 的方式来实现, 看一下示例:

from enum import Enum
class WeekDay(Enum):
    Mon = 0
    Tue = 1
    Wed = 2
    Thu = 3
    Fri = 4

访问

枚举成员及属性的访问如下所示:

# 枚举成员
print(WeekDay.Mon)
# 枚举成员名称
print(WeekDay.Mon.name)
# 枚举成员值
print(WeekDay.Mon.value)

枚举的迭代也很简单,如下所示:

# 方式 1
for day in WeekDay:
    # 枚举成员
    print(day)
    # 枚举成员名称
    print(day.name)
    # 枚举成员值
    print(day.value)
# 方式 2
print(list(WeekDay))

比较

枚举成员及属性可以使用 is 进行对象比较,还可以使用 == 进行值比较,看下示例:

print(WeekDay.Mon is WeekDay.Thu)
print(WeekDay.Mon == WeekDay.Mon)
print(WeekDay.Mon.name == WeekDay.Mon.name)
print(WeekDay.Mon.value == WeekDay.Mon.value)

枚举成员不能进行大小比较,如下所示:

>>> WeekDay.Mon < WeekDay.Thu
TypeError: '<' not supported between instances of 'WeekDay' and 'WeekDay'

确保枚举值唯一

我们定义枚举时,成员名称是不可以重复的,但成员值是可以重复的,如果想要保证成员值不可重复,可以通过装饰器@unique 来实现,如下所示:

 from enum import Enum, unique
@unique
class WeekDay(Enum):
  Mon = 0
    ...


相关文章
|
4月前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
5月前
|
安全 Python
Python学习 -- 枚举类
Python学习 -- 枚举类
48 0
|
12月前
|
安全 Python
Python学习 -- 枚举类
Python学习 -- 枚举类
45 0
|
算法 Python
Python | 关于枚举法的奥秘
Python | 关于枚举法的奥秘
80 0
|
存储 算法 Python
Python3 数据结构与算法之枚举
Python3 数据结构与算法之枚举
|
Python
Python3 新增加的数据类型:枚举 enum
Python3 新增加的数据类型:枚举 enum
139 0
|
算法 索引 Python
【python】之哥德巴赫猜想(递归法)和教室排课(枚举法)
【python】之哥德巴赫猜想(递归法)和教室排课(枚举法)
215 0
【python】之哥德巴赫猜想(递归法)和教室排课(枚举法)
|
Python
蓝桥杯 试题G 回文日期 Python 枚举法
蓝桥杯 试题G 回文日期 Python 枚举法
74 0
蓝桥杯 试题G 回文日期 Python 枚举法
|
Python
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
115 0
【Python零基础入门篇 · 12】:函数的定义和作用、函数参数、函数嵌套、枚举函数enumerate
下一篇
无影云桌面