Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Python 枚舉類
匿名網(wǎng)友發(fā)布于:2023-09-12 11:13:30
(侵權(quán)舉報(bào))

Python 7天快速入門完整視頻教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

枚舉類

 

 

在某些情況下,一個(gè)類的對(duì)象是有限且固定的,比如季節(jié)類,它只有4個(gè)對(duì)象;再比如星期,只有星期一到星期日。這種實(shí)例有限且固定的類,在Python中被稱為枚舉類。枚舉類不能被修改,自然也不能被繼承。

定義枚舉類方式有兩種:

  • 直接使用Enum列出多個(gè)枚舉值來(lái)創(chuàng)建枚舉類

  • 通過(guò)繼承Enum基類來(lái)派生枚舉類

下面實(shí)例,通過(guò)Enum列出多個(gè)枚舉值

 

import enum

# 定義一個(gè)Season枚舉類 Enum第一個(gè)參數(shù)是類名,第二個(gè)參數(shù)是元組,用于列出所有枚舉值
# 每個(gè)成員都有name和value兩個(gè)屬性,name是枚舉值變量名,value是枚舉值的序號(hào),從1開(kāi)始
Season = enum.Enum('Season', ('SPRING', 'SUMMER', 'FALL', 'WINTER'))
print(Season.SPRING)
print(Season.SPRING.name)
print(Season.SPRING.value)

# 根據(jù)枚舉變量名來(lái)訪問(wèn)枚舉對(duì)象
print(Season['WINTER'])
# 根據(jù)枚舉值訪問(wèn)枚舉獨(dú)享
print(Season(4))

# 提供__members__屬性,該屬性返回一個(gè)dict字典,包含了所有枚舉實(shí)例;通過(guò)__members__屬性,訪問(wèn)所有枚舉值
for name, member in Season.__members__.items():
    print(name, '=>', member, ",", member.value)

 

 

運(yùn)行輸出:

 

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

 

如果要定義更復(fù)雜的枚舉,則可以通過(guò)繼承Enum來(lái)派生枚舉類,這種方法的程序可以定義額外方法:

 

import enum


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

    def info(self):
        print(f"這個(gè)是代表星期的一個(gè)數(shù)值:{self.value}")


print(Week.MON)
print(Week.MON.name)
print(Week.MON.value)
# 通過(guò)枚舉變量名來(lái)訪問(wèn)
print(Week['SAT'])
print(Week['SAT'].name)
print(Week['SAT'].value)
# 通過(guò)枚舉值來(lái)訪問(wèn)
print(Week('星期日'))
print(Week('星期日').name)
print(Week('星期日').value)
# 調(diào)用枚舉方法info
Week.FRI.info()
# 通過(guò)__members__訪問(wèn)所有枚舉值
for name, member in Week.__members__.items():
    print(name, '=>', member, ',', member.value)

 

運(yùn)行結(jié)果:

 

Week.MON
MON
星期一
Week.SAT
SAT
星期六
Week.SUN
SUN
星期日
這個(gè)是代表星期的一個(gè)數(shù)值:星期五
MON => Week.MON , 星期一
TUE => Week.TUE , 星期二
WED => Week.WED , 星期三
THU => Week.THU , 星期四
FRI => Week.FRI , 星期五
SAT => Week.SAT , 星期六
SUN => Week.SUN , 星期日

 

 

 

轉(zhuǎn)載自: