Python 枚举类

视频版教程 Python3零基础7天入门实战视频教程

在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有4个对象;再比如星期,只有星期一到星期日。这种实例有限且固定的类,在Python中被称为枚举类。枚举类不能被修改,自然也不能被继承。

定义枚举类方式有两种:

  • 直接使用Enum列出多个枚举值来创建枚举类
  • 通过继承Enum基类来派生枚举类

下面实例,通过Enum列出多个枚举值

import enum

# 定义一个Season枚举类 Enum第一个参数是类名,第二个参数是元组,用于列出所有枚举值
# 每个成员都有name和value两个属性,name是枚举值变量名,value是枚举值的序号,从1开始
Season = enum.Enum('Season', ('SPRING', 'SUMMER', 'FALL', 'WINTER'))
print(Season.SPRING)
print(Season.SPRING.name)
print(Season.SPRING.value)

# 根据枚举变量名来访问枚举对象
print(Season['WINTER'])
# 根据枚举值访问枚举独享
print(Season(4))

# 提供__members__属性,该属性返回一个dict字典,包含了所有枚举实例;通过__members__属性,访问所有枚举值
for name, member in Season.__members__.items():
    print(name, '=>', member, ",", member.value)

运行输出:

Season.SPRING
SPRING
1
Season.WINTER
Season.WINTER
SPRING => Season.SPRING , 1
SUMMER => Season.SUMMER , 2
FALL => Season.FALL , 3
WINTER => Season.WINTER , 4

如果要定义更复杂的枚举,则可以通过继承Enum来派生枚举类,这种方法的程序可以定义额外方法:

import enum


class Week(enum.Enum):
    MON = '星期一'
    TUE = '星期二'
    WED = '星期三'
    THU = '星期四'
    FRI = '星期五'
    SAT = '星期六'
    SUN = '星期日'

    def info(self):
        print(f"这个是代表星期的一个数值:{self.value}")


print(Week.MON)
print(Week.MON.name)
print(Week.MON.value)
# 通过枚举变量名来访问
print(Week['SAT'])
print(Week['SAT'].name)
print(Week['SAT'].value)
# 通过枚举值来访问
print(Week('星期日'))
print(Week('星期日').name)
print(Week('星期日').value)
# 调用枚举方法info
Week.FRI.info()
# 通过__members__访问所有枚举值
for name, member in Week.__members__.items():
    print(name, '=>', member, ',', member.value)

运行结果:

Week.MON
MON
星期一
Week.SAT
SAT
星期六
Week.SUN
SUN
星期日
这个是代表星期的一个数值:星期五
MON => Week.MON , 星期一
TUE => Week.TUE , 星期二
WED => Week.WED , 星期三
THU => Week.THU , 星期四
FRI => Week.FRI , 星期五
SAT => Week.SAT , 星期六
SUN => Week.SUN , 星期日
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值