兩種方式定義枚舉類:
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