python3 枚舉enum定義和使用


兩種方式定義枚舉類:

1、直接使用Enum列出多個枚舉值來創建枚舉類。

2、通過集成Enum基類派生枚舉類。

 

程序示范:

1、直接使用Enum列出多個枚舉值來創建枚舉類。

from enum import Enum
#定義Month枚舉類
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

上面的代碼使用Enum()函數來創建枚舉類,該方法第一個參數:枚舉類的類名;第二個參數:元組,用於列出所有枚舉值。

通過枚舉值訪問每個枚舉元素,每個元素都有name,value兩個屬性,其中name屬性值為該枚舉值的變量名,value代表該枚舉值的序號(序號通常從1開始)。

# 遍歷Month所有成員
for member in Month:
    print(member.name,  member.value)

# 直接使用枚舉
print(Month.Jan)       # Month.Jan
print(Month.Jan.name)  # Jan
print(Month.Jan.value) # 1

# 通過枚舉變量名或枚舉值來訪問指定枚舉對象
print(Month['Jan'])    # Month.Jan
print(Month(1))        # Month.Jan

此外 python 還為枚舉提供了一個__members__屬性,該屬性返回一個dict字典,字典包含了該枚舉的所有枚舉實例。

# 遍歷Month枚舉的所有成員
for name, member in Month.__members__.items():
    print(name, '=>', member, ',', member.value)

輸出:
Jan => Month.Jan , 1
...

2、通過繼承 Enum 來派生枚舉類,定義復雜的枚舉

from enum import Enum, unique

@unique
class Weekday(Enum):
    Sun = 0 # Sun的value被設定為0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6

@unique裝飾器可以幫助我們檢查保證沒有重復值。

若是不加@unique裝飾器,枚舉成員名允許重復。

 

訪問這些枚舉類型可以有若干種方法:

print(Weekday.Tue)       # Weekday.Tue
print(Weekday['Tue'])    # Weekday.Tue
print(Weekday.Tue.value) # 2
print(Weekday(1))        # Weekday.Mon

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM