CDA数据分析师:数据科学、人工智能从业者的在线大学。
数据科学(Python/R/Julia)数据分析、机器学习、深度学习 Q群:874447702

枚举(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)
#整型枚举classNumber(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 =4
Fri =5
Sat = 6
print(Weekday.Sat.value)
21.4枚举取值
枚举可通过成员获取它的名称和值,可通过名称或值获取成员。
#引入枚举类和唯一装饰器fromenumimportEnum, unique
@unique
classMonths(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 =4
red_alias =1
#获取成员名称,值相等的,只获取第一个forcolorinColors:
print(color.name)
#获取所有成员名称forcolorinColors.__members__:
print(color)
21.6枚举比较


雷达卡





京公网安备 11010802022788号







