python3.6基础知识_python3.6下枚举的基础知识学习

一、什么是枚举:

1.定义枚举要导入enum模块。

2.枚举定义用class关键字,继承enum类。

用于定义枚举的class和定义类的class是有区别

from enum import enum

class color(enum):

red = 1

blue = 2

yellow = 3

pink = 4

print(color.red)

注意:

首先要导入enum模块,注意大小写,class类中,继承enum类;

枚举出成员,有各自不同的名称和值,一定要不同!!

每个成员的名称是color.red,color.blue.....

1.定义枚举时,成员名不允许重复:

from enum import enum

class color(enum):

red = 1

red = 2#提示错误:typeerror: attempted to reuse key: 'red' 代码不能执行

2.默认状态下,不同成员值允许相同,但是第二个成员被视为第一个成员的别名

from enum import enum

class color(enum):

red = 1

red_alias = 1#red_alias就被视作成员color.red名称red的别名 ,只获取第一个

print(color(1)) #color.red

3.限制定义枚举,导入@unique装饰器后,不能定义相同值的成员

from enum import enum,unique

@unique

class color(enum):

red = 1

red_other = 1 #此处值相同,报错valueerror: duplicate values found in : red_other -> red

blue = 2

yellow = 3

pink = 4

二、获取枚举值

2.1通过成员的名称来获取成员

color['red']

2.2通过成员值来获取成员

color(2)

2.3通过成员,来获取它的名称和值

red_member = color.red

red_member.name

red_member.value

三、迭代器

3.1 枚举支持迭代器,可以遍历枚举成员

for c in color:

print(c, end=' ')

# 打印结果 color.red color.orange color.yellow

3.2如果枚举有值重复的成员,循环遍历枚举时只获取值重复成员的第一个成员

from enum import enum

class color(enum):

red = 1

red_other = 1

blue = 2

yellow = 3

pink = 4

for c in color:

print(c,end=' ')

# 打印结果 color.red color.blue color.yellow color.pink 并不会打印red_other

3.3如果想把值重复的成员也遍历出来,要用枚举的一个特殊属性__members__

注意:__members__和__members__.items()都不会报错,但打印结果略有不同

比较一:__members__.items()

class color(enum):

red = 1

red_other = 1

blue = 2

yellow = 3

pink = 4

for c in color.__members__.items():

print(c,end=' ')

# 打印结果 ('red', ) ('red_other', ) ('blue', ) ('yellow', ) ('pink', )

比较二:__members__

for c in color.__members__:

print(c,end=' ')

# 打印结果 red red_other blue yellow pink 此时不会出值,只有名称

四、枚举的比较

4.1枚举成员可进行同一性比较

color.red is color.red

输出结果是:true

color.red is not color.blue

输出结果是:true

4.2枚举成员可进等值比较

color.blue == color.red

输出结果是:false

color.blue != color.red

输出结果是:true

4.3枚举成员不能进行大小比较

color.red < color.blue

输出结果出错:typeerror: unorderable types: color() < color()

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值