千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  技术干货  >  Python技术干货  > Python 枚举

Python 枚举

来源:千锋教育
发布时间:2023-11-06 20:45:38
分享

1.枚举的定义

首先,定义枚举要导入enum模块。

枚举定义用class关键字,继承Enum类。

用于定义枚举的class和定义类的class是有区别【下一篇博文继续分享】。

示例代码:

fromenumimportEnum

classColor(Enum):

red=1

orange=2

yellow=3

green=4

blue=5

indigo=6

purple=7

代码分析:

上面的代码,我们定义了颜色的枚举Color.

颜色枚举有7个成员,分别是Color.red、Color.orange、Color.yellow等。

每一个成员都有它们各自名称和值,Color.red成员的名称是:red,值是:1。

每个成员的数据类型就是它所属的枚举。【*注:用class定义的类,实际上就是一种类型】

1.1定义枚举时,成员名称不允许重复

fromenumimportEnum

classColor(Enum):

red=1

red=2

上面的代码,就无法执行。提示错误:TypeError:Attemptedtoreusekey:'red'

1.2默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名

fromenumimportEnum

classColor(Enum):

red=1

red_alias=1

成员Color.red和Color.red_alias具有相同的值,那么成员Color.red_alias的名称red_alias就被视作成员Color.red名称red的别名。

1.3如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员

fromenumimportEnum

classColor(Enum):

red=1

red_alias=1

print(Color(1))

输出结果为:Color.red

1.4如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】

fromenumimportEnum,unique

@unique

classColor(Enum):

red=1

red_alias=1

再执行就会提示错误:ValueError:duplicatevaluesfoundin:red_alias->red

2.枚举取值

2.1通过成员的名称来获取成员

Color['red']

2.2通过成员值来获取成员

Color(2)

2.3通过成员,来获取它的名称和值

red_member=Color.red

red_member.name

red_member.value

3.迭代器

3.1枚举支持迭代器,可以遍历枚举成员

forcolorinColor:

print(color)

输出结果是,枚举的所有成员。Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple。

3.2如果枚举有值重复的成员,循环遍历枚举时只获取值重复成员的第一个成员

fromenumimportEnum

classColor(Enum):

red=1

orange=2

yellow=3

green=4

blue=5

indigo=6

purple=7

red_alias=1

forcolorinColor:

print(color)

输出结果是:Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple。但是Color.red_alias并没有出现在输出结果中。

3.3如果想把值重复的成员也遍历出来,要用枚举的一个特殊属性__members__

fromenumimportEnum

classColor(Enum):

red=1

orange=2

yellow=3

green=4

blue=5

indigo=6

purple=7

red_alias=1

forcolorinColor.__members__.items():

print(color)

输出结果:('red',)、('orange',)、('yellow',)、('green',)、('blue',)、

('indigo',)、('purple',)、('red_alias',)

4.枚举比较

4.1枚举成员可进行同一性比较

Color.redisColor.red

输出结果是:True

Color.redisnotColor.blue

输出结果是:True

4.2枚举成员可进等值比较

Color.blue==Color.red

输出结果是:False

Color.blue!=Color.red

输出结果是:True

4.3枚举成员不能进行大小比较

Color.red

输出结果出错:TypeError:unorderabletypes:Color()

以上内容为大家介绍了Python枚举,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python虚拟环境工具virtualenv virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。安装pipinstallvirtualenv
  • Python基础之循环 循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n
  • python函数的定义 首先,我们要定义一个函数,以说明这个函数的功能。defsquare_sum(a,b):c=a**2+b**2returnc这个函数的功能是求两个数的平方和。首先,def,这个关键字通知python:我
  • Python名称空间规则 名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。通俗讲:名称空间就是存放名字
  • Python系统互动 系统互动,主要指Python和操作系统(operatesystem)、文件系统(filesystem)的互动。Python可以实现一个操作系统的许多功能。它能够像bash脚本那样管理操作系统,这也是P
  • 网络功能对于Python的意义 现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从Ruby,JavaScript,php身上都可以感受到这一点。Python的标准库对互联网开发的支持并不充分,这也是Django等基于Pyth