py3.6枚举

本文详细介绍了Python中枚举类的定义与使用方法,包括如何导入enum模块、定义枚举类、限制重复值、获取枚举成员及值、枚举的比较规则等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举的定义

  1. 首先,定义枚举要导入enum模块。
  2. 枚举定义用class关键字,继承Enum类。
  3. 用于定义枚举的class和定义类的class是有区别
  4. from enum import Enum,unique
    #如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】
    
    #@unique
    class color(Enum):
        """
        对于一些既定的值 不允许随意赋值的量
        每个成员的数据类型就是它所属的枚举
        自定义的类/枚举 又叫自定义数据类型
        """
        red=1
        red_y=1
        orange=2
        yellow=3
        green=4
        blue=5
        purple=6

注意:

        定义枚举时,成员名称不允许重复 

        默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名 

        如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员

        如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】

根据枚举的值,获取枚举的名字

print(color(1))
print(color['orange'])
print(color['orange'].value)
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
color.red
color.orange
2

Process finished with exit code 0
创建 生成一个枚举类型
co=color['purple']
print('枚举数据名字:',co.name)
print('枚举数据的值:',co.value)
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
枚举数据名字: purple
枚举数据的值: 6

Process finished with exit code 0

迭代器 枚举支持迭代器

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

for c in color:
    print(c,end=' ')
print()
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
color.red color.orange color.yellow color.green color.blue color.purple 

Process finished with exit code 0

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

for c in color.__members__.items():
    print(c)
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
('red', <color.red: 1>)
('red_y', <color.red: 1>)
('orange', <color.orange: 2>)
('yellow', <color.yellow: 3>)
('green', <color.green: 4>)
('blue', <color.blue: 5>)
('purple', <color.purple: 6>)

Process finished with exit code 0
枚举比较 不能比较大小 只能比较相不相等
print(color.red==color.red_y)
print(color.red!=color.red_y)
print(color.red is color.red_y)
print(color.red is color.blue)
print(color.red.value < color.blue.value)
print(type(color.red.value))
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
True
False
True
False
True
<class 'int'>

Process finished with exit code 0
#
print(color.red < color.blue)
/Users/liuqian/venv/learn/bin/python /Users/liuqian/PycharmProjects/learn/面向对象/枚举.py
Traceback (most recent call last):
  File "/Users/liuqian/PycharmProjects/learn/面向对象/枚举.py", line 50, in <module>
    print(color.red < color.blue)
TypeError: '<' not supported between instances of 'color' and 'color'

Process finished with exit code 1












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值