兩種方式定義枚舉類:python
一、直接使用Enum列出多個枚舉值來建立枚舉類。函數
二、經過集成Enum基類派生枚舉類。spa
程序示範:code
一、直接使用Enum列出多個枚舉值來建立枚舉類。對象
from enum import Enum #定義Month枚舉類 Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
上面的代碼使用Enum()函數來建立枚舉類,該方法第一個參數:枚舉類的類名;第二個參數:元組,用於列出全部枚舉值。blog
經過枚舉值訪問每一個枚舉元素,每一個元素都有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字典,字典包含了該枚舉的全部枚舉實例。it
# 遍歷Month枚舉的全部成員 for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value)
輸出:
Jan => Month.Jan , 1
...
二、經過繼承 Enum 來派生枚舉類,定義複雜的枚舉class
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
裝飾器能夠幫助咱們檢查保證沒有重複值。import
如果不加@unique裝飾器,枚舉成員名容許重複。
訪問這些枚舉類型能夠有若干種方法:
print(Weekday.Tue) # Weekday.Tue print(Weekday['Tue']) # Weekday.Tue print(Weekday.Tue.value) # 2 print(Weekday(1)) # Weekday.Mon