【python】枚举类

定义常量时,我们可以用到枚举类。
在没有专门提供枚举类型的时候,一般就通过字典或类来实现:

Color = {
    'RED'  : 1,
    'GREEN': 2,
    'BLUE' : 3,
}

class Color:
    RED   = 1
    GREEN = 2
    BLUE  = 3

这种来实现枚举如果小心翼翼地使用当然没什么问题,毕竟是一种妥协的解决方案。它的隐患在于可以被修改。

枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。

from enum import Enum
class Color(Enum):
    red = 1
    blue = 2
    yellow = 3

枚举类型不可实例化,不可更改。

定义枚举类时,成员值不允许相同。成员名可以相同,相同的成员名看成是第一个相同成员名的别名

如果希望成员名亦不相同,可以添加@unique装饰器

from enum import Enum,unique
@unique
class Color(Enum):
    red = 1
    blue = 2
    yellow = 3

枚举取值

枚举类中的每一个成员都有名称属性和值属性
可以通过成员名或者成员值来访问成员

print(Color['red'])  # Color.red  通过成员名来获取成员

print(Color(1))      # Color.red  通过成员值来获取成员
member = Color.red
print(member.name)   # red
print(member.value)  # 1

支持迭代的方式遍历成员,按定义的顺序,如果有值重复的成员,只获取重复的第一个成员:

for color in Color:
    print(color)

特殊属性 members 是一个将名称映射到成员的有序字典,也可以通过它来完成遍历:

for color in Color.__members__.items():
    print(color)          # ('red', <Color.red: 1>)
>>> for name, member in Color.__members__.items():
...     print(name, '=>', member)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值