搜故事,从300万个故事到海量知识百科的华丽转变!
搜故事 > 小故事 > 正文

python之枚举类型

时间:2020-04-25

它是一系列常量的集合,通常用于表示某些特定的有限集合,如月份、星期、状态、性别男、女、不男不女等,当一个变量有几种可能取值的时候,定义为枚举类型

提示:本文共有 2143 个字,阅读大概需要 5 分钟。

枚举(Enum)跟整型一样,是一种数据类型。它是一系列常量的集合,通常用于表示某些特定的有限集合,如月份、星期、状态、性别(男、女、不男不女)等,当一个变量有几种可能取值的时候,定义为枚举类型。

21.1 枚举定义

枚举是不可变类型,一旦定义创建,其成员的值不可改变,名称不可重复,通过class关键字和继承Enum类进行定义。定义时若出现成员的值相同,那只有第一个有效,其语法结构为:

class 枚举名(Enum):

成员名1 = 值1

成员名x = 值n

# ---引入枚举类---

from enum import Enum

class Colors(Enum):

red = 1

orange = 2

yellow = 3

green = 4

red_alias = 1

print(Colors(1))

21.2 整型枚举

枚举成员的值支持多种数据类型,如字符串、布尔或整型等,如要指定为整型,可继承IntEnum类。注意,就算指定为IntEnum,其成员的值照样可以为字符串等,但在获取成员的值时,会进行自动转换,如果转换失败,会报错。当然,既然指定为整型了,就不要故意指定为字符串等了。

# ---引入枚举类---

from enum import Enum, IntEnum

# 字符串枚举

class Gender(Enum):

Male = "男"

Female = "女"

Unknown = "保密"

print(Gender.Male.value)

# 整型枚举class Number(IntEnum):

One = 1

Two = 2

# 会自动转为整型

Three = "3"

print(Number.Three.value)

21.3 唯一值

如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique进行限制。如若出现相同值,运行时会报错。

# 引入枚举类和唯一装饰器

from enum import Enum, unique

@unique

class Weekday(Enum):

Sun = 0

Mon = 1

Tue = 2

Wed = 3

Thu = 4Fri = 5

Sat = 6

print(Weekday.Sat.value)

21.4 枚举取值

枚举可通过成员获取它的名称和值,可通过名称或值获取成员。

# 引入枚举类和唯一装饰器from enum import Enum, unique

@uniqueclass Months(Enum):

Jan = 1

Feb = 2

Mar = 3

Apr = 4

May = 5

Jun = 6

Jul = 7

Aug = 8

Sep = 9

Oct = 10

Nov = 11

Dec = 12

# 通过成员获取名称和值print(Months.Jan.name, Months.Jan.value)

# 通过名称和值获取成员

print(Months["Feb"], Months(2))

21.5 枚举遍历

通过for循环遍历枚举成员时,如若出现成员的值相同时,只获取第一个成员。当然,如果要遍历所有成员的话,得用特殊的方式获取,就是通过__menbers__属性。

# ---引入枚举类---

from enum import Enum

class Colors(Enum):

red = 1

orange = 2

yellow = 3

green = 4red_alias = 1

# 获取成员名称,值相等的,只获取第一个for color in Colors:print(color.name)

# 获取所有成员名称for color in Colors.__members__:

print(color)

21.6 枚举比较

枚举成员不可以比较大小,但可以通过is、is not 和==、!=进行同性或等值比较。

# ---引入枚举类---

from enum import Enum

class Colors(Enum):

red = 1

orange = 2

yellow = 3

green = 4red_alias = 1

# is 判断result = Colors.red is Colors.red

print(result)

# is not判断

result = Colors.red is not Colors.green

print(result)

# ==比较值是否相等

result = Colors.red == Colors.red_alias

print(result)

# !=比较值是否不相等

result = Colors.red != Colors.green

print(result)

21.7 类中枚举

枚举可以定义在类里,并可通过类名和枚举名进行调用。

# ---引入枚举类---

from enum import Enum

class Plane:

def __init__(self, color):

self.color = color

# 类的成员

class Colors(Enum):

Red = 1

Orange = 2

Yellow = 3

Green = 4

Blue = 5

plane = Plane(Plane.Colors.Blue.value)print(plane.color)

看到此处说明本文对你还是有帮助的,关于“python之枚举类型”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
Python那些事——python还能这么玩?帅呆了

Python那些事——python还能这么玩?帅呆了

天沟,漫画,图像,方法,代表,边界,参数,检测,版本,行号,内容,文件名,部分,选项,默认值,变量,字符串,时候,程序,算法,检查,调整,检测算法,这里下载,一行,代码,前缀,定义,宽度,所在

2008-07-07 #经典故事

Python中斐波那契数列

Python中斐波那契数列

2008-09-01 #小故事

如何降低 Python 的内存消耗量?

如何降低 Python 的内存消耗量?

2010-12-31 #经典故事

魅力python——if

魅力python——if

分数,代码,缩进,计算机,语句,人类,条件,方法,百分制,工作,写一个,可以看出,小程序,自动完成,不及格,大家好,人为,个例,功能,字符串,小伙伴,工作量,成绩,思路,想学,机能,所属,扔给,方方面面,算机

2015-12-02 #故事大全

「Python」每日一练:猴子偷桃

「Python」每日一练:猴子偷桃

桃子,方法,总数,猴子,假设,个数,关系,吃法,思路,结果,分析,循环,运行,不过瘾,多少个,可以通过,循环语句

2011-06-10 #小故事

Python学习好书推荐

Python学习好书推荐

算法,这本书,有帮助,网络爬虫,教程,数学,朋友,爬虫,科学计算,后续,介绍了,劳森,理查德,程序开发,好的,最核心,老师,书籍,中文版,内容,分析方法,原理,多方面,基础,指南,工具书,小节,工具,技巧,效率

2014-08-01 #经典故事

用python分析四大名著之三国演义

用python分析四大名著之三国演义

2017-08-21 #长篇故事

使用Python实现凯撒加密算法

使用Python实现凯撒加密算法

凯撒密码,字母表,字符,字母,凯撒,索引,密钥,明文,位置,加密技术,密码学,加密算法,凯撒大帝,代码,古罗马,算法,轮盘,转盘,长度,依次类推,密文,信息,军事情报,网络,外圈,密码,技术,所示,敌人,方法

2010-12-20 #小故事