python枚举类

  • 一些具有特殊含义的类,其实例化对象的个数需要是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个

  • Python 3.4 中新增加了 Enum 枚举类。也就是说,对于这些实例化对象个数固定的类,可以用枚举类来定义

如何定义一个枚举类

from enum import Enum

class Color(Enum):
	# 为序列值指定value值
    red = 1
    green = 2
    blue = 3
    
1、在 Color 枚举类中,red、green、blue 都是该类的成员(可以理解为是类变量)
2、枚举类的每个成员都由 2 部分组成,分别为 name 和 value,其中 name 属性值为该枚举值的变量名(如 red),value 代表该枚举值的序号(序号通常从 1 开始)

和普通类不同,枚举类不能用来实例化对象,访问枚举类成员方式有多种

# 调用枚举成员的3种方式
print(Color.red) # Color.red
print(Color["red"]) # Color.red
print(Color(1)) # Color.red
#调取枚举成员中的value和name
print(Color.red.value) # 1
print(Color.red.name) # red


# 遍历枚举类中所有成员的方式
for color in Color:
	print(color)
	
Color.red
Color.green
Color.blue

枚举类成员之间不能比较大小,但可以用 == 或者 is 进行比较是否相等

print(Color.red == Color.green) # False
print(Color.red.name is Color.green.name) # False

注意:枚举类中各个成员的值,不能在类的外部做任何修改

Python 枚举类中各个成员必须保证 name 互不相同,但 value 可以相同

from enum import Enum
class Color(Enum):
	red = 1
	green = 1 #green和red的值相同,会将green当作是red的别名,当访问 green 成员时,最终输出的是 red
	blue = 2
print(Color.red)

在实际编程过程中,如果想避免发生这种情况,可以借助 @unique 装饰器,这样当枚举类中出现相同值的成员时,程序会报 ValueError 错误

from enum import Enum,unique

@unique
class Color(Enum):
    red = 1
    green = 1
    blue = 2
print(Color.red)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值