Python进阶丨面向对象高级编程 —— 枚举类

枚举类

.

  • 描述

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

在没有专门提供枚举类型的时候,一般通过字典或类实现

Color = {
	‘Red' : 1,
	'Green':2,
	'Blue':3,
}

class Color:
    Red = 1
    Green = 2
    Blue = 3

它的隐患在于可以被修改

  • 使用Enum

使用标准库提供的Enum就可以实现这个功能

from enum import Enum

class Color(Enum):
    Red = 1
    Green = 2
    Blue = 3
 
print(Color.Red)
print(repr(Color.red))
print(type(Color.red))
print(isinstance(Color.red, Color))

输出

Color.Red
<Color.Red: 1>
<enum 'Color'>
True

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

  • 定义枚举
from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    green = 2
    bule = 3

@unique装饰器可以帮助检查,保证没有重复值

1.可以通过成员名来获取成员,也可以通过成员值之来获取成员

from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    green = 2
    bule = 3

print(Color['red'])
print(Color(1))

输出

Color.red
Color.red

2.每个成员都有名称属性和值属性

from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    green = 2
    bule = 3

me = Color.red
print(me.name)
print(me.value)

输出

red
1

3.支持迭代的方式遍历成员

from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    green = 2
    bule = 3


for color in Color:
    print(color)

输出

Color.red
Color.green
Color.bule

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

from enum import Enum, unique

@unique
class Color(Enum):
    red = 1
    green = 2
    bule = 3


for color in Color.__members__.items():
    print(color)

输出

('red', <Color.red: 1>)
('green', <Color.green: 2>)
('bule', <Color.bule: 3>)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值