python3 枚舉enum定義和使用

兩種方式定義枚舉類: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
相關文章
相關標籤/搜索