python中的枚举,python枚举法例子
本文主要介绍Python枚举类的定义和用法。文章重点介绍了题目的相关信息,有一定的参考价值,有需要的朋友可以参考一下。
前言:
对于一些有特殊含义的类,实例化对象的数量往往是固定的。例如,如果使用一个类来表示月份,那么该类最多有12个实例化对象。例如,如果季节由一个类表示,那么该类最多有四个实例化的对象。
针对这个特殊的类,Python 3.4中新增了Enum枚举类。也就是说,这些实例化对象数量固定的类可以通过枚举类来定义。
例如,下面程序演示了如何定义一个枚举类:
从枚举导入枚举
类别颜色(枚举):
#指定序列值的值
红色=1
绿色=2
蓝色=3
如果要将一个类定义为枚举类,只需要让它继承enum模块中的enum类即可。比如上面的程序中,Color类继承了Enum类,证明它是一个枚举类。
在颜色枚举类中,红、绿、蓝都是类的成员(可以理解为类变量)。注意,enumeration类的每个成员都由name和value两部分组成,其中name属性的值是枚举值的变量名(如red),value表示枚举值的序列号(序列号通常从1开始)。
与普通类不同,枚举类不能用来实例化对象,但这并不妨碍我们访问枚举类中的成员。访问枚举类成员的方法有很多,比如以颜色枚举类为例。
在其基础上添加如下代码:
# 3调用枚举成员的方法
打印(彩色.红色)
打印(彩色[红色])
打印(彩色(1))
#调用枚举成员中的值和名称
打印(颜色.红色.数值)
打印(Color.red.name)
# 2迭代枚举类中所有成员的方法
适用于彩色:
打印(彩色)
程序输出结果为:
颜色.红色
颜色.红色
颜色.红色
一
红色
颜色.红色
颜色.绿色
颜色.蓝色
枚举成员不能互相比较,但可以用==或者is比较,看是否相等,例如.
打印(Color.red==Color.green)
打印(颜色.红色.名称是颜色.绿色.名称)
输出结果为:
假
假
需要注意的是,枚举类中每个成员的值不能在类外修改,也就是说下面的语法是错误的:
Color.red=4
此外,枚举类还提供了__members__属性,这是一个包含枚举类所有成员的字典。通过遍历该属性,还可以访问枚举类的每个成员。
例如:
对于“名称”,“彩色成员”。__成员_ _。物品():
打印(姓名,-,成员)
输出结果为:
红色,红色
绿色。绿色
蓝色,蓝色
值得一提的是,Python枚举类的每个成员必须保证名字互不相同,但值可以相同。
举个例子:
从枚举导入枚举
类别颜色(枚举):
#指定序列值的值
红色=1
绿色=1
蓝色=3
打印(彩色[绿色])
输出结果为:
颜色.红色
你可以看到,Co
lor 枚举类中 red 和 green 具有相同的值(都是 1),Python 允许这种情况的发生,它会将 green 当做是 red 的别名,因此当访问 green 成员时,最终输出的是 red。
在实际编程过程中,如果想避免发生这种情况,可以借助 @unique 装饰器,这样当枚举类中出现相同值的成员时,程序会报 ValueError 错误。
例如:
#引入 uniquefrom enum import Enum,unique
#添加 unique 装饰器
@unique
class Color(Enum):
# 为序列值指定value值
red = 1
green = 1
blue = 3
print(Color[green])
运行程序会报错:
Traceback (most recent call last):
File "D:\python3.6\demo.py", line 3, in <module>
class Color(Enum):
File "D:\python3.6\lib\enum.py", line 834, in unique
(enumeration, alias_details))
ValueError: duplicate values found in <enum 'Color'>: green -> red
除了通过继承 Enum 类的方法创建枚举类,还可以使用 Enum() 函数创建枚举类。
例如:
from enum import Enum#创建一个枚举类
Color = Enum("Color",(red,green,blue))
#调用枚举成员的 3 种方式
print(Color.red)
print(Color[red])
print(Color(1))
#调取枚举成员中的 value 和 name
print(Color.red.value)
print(Color.red.name)
#遍历枚举类中所有成员的 2 种方式
for color in Color:
print(color)
Enum() 函数可接受 2 个参数,第一个用于指定枚举类的类名,第二个参数用于指定枚举类中的多个成员。
如上所示,仅通过一行代码,即创建了一个和前面的 Color 类相同的枚举类。
运行程序,其输出结果为:
Color.red
Color.red
Color.red
1
red
Color.red
Color.green
Color.blue
到此这篇关于Python枚举类定义和使用方法的文章就介绍到这了,更多相关Python 枚举 内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。