python3 枚举_python之枚举类型

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

21.1 枚举定义

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

class 枚举名(Enum):

成员名1 = 值1

成员名x = 值n

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

fromenum importEnum

classColors(Enum):

red = 1

orange = 2

yellow = 3

green = 4

red_alias = 1

print(Colors(1))

21.2 整型枚举

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

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

fromenum importEnum, IntEnum

#字符串枚举

classGender(Enum):

Male = "男"

Female = "女"

Unknown = "保密"

print(Gender.Male.value)

#整型枚举classNumber(IntEnum):

One = 1

Two = 2

#会自动转为整型

Three = "3"

print(Number.Three.value)

21.3 唯一值

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

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

fromenum importEnum, unique

@unique

classWeekday(Enum):

Sun = 0

Mon = 1

Tue = 2

Wed = 3

Thu = 4Fri = 5

Sat = 6

print(Weekday.Sat.value)

21.4 枚举取值

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

#引入枚举类和唯一装饰器fromenum importEnum, unique

@uniqueclassMonths(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__属性。

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

fromenum importEnum

classColors(Enum):

red = 1

orange = 2

yellow = 3

green = 4red_alias = 1

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

#获取所有成员名称forcolor inColors.__members__:

print(color)

21.6 枚举比较

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

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

fromenum importEnum

classColors(Enum):

red = 1

orange = 2

yellow = 3

green = 4red_alias = 1

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

print(result)

# is not判断

result = Colors.red is notColors.green

print(result)

# ==比较值是否相等

result = Colors.red == Colors.red_alias

print(result)

# !=比较值是否不相等

result = Colors.red != Colors.green

print(result)

21.7 类中枚举

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

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

fromenum importEnum

classPlane:

def__init__(self, color):

self.color = color

#类的成员

classColors(Enum):

Red = 1

Orange = 2

Yellow = 3

Green = 4

Blue = 5

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值