列舉
將所有的項目全部都集合在一個類別內, 比如 1~12月的英文縮寫. 集合成Month class, 日後需要使用到其中的一個, 比如五月, 就直接打Month.May即可. Month.May.name即會傳回 “May” 字串,另外使用Month.May.value, 會顯示編號5.
請注意, 編號由1開始
from enum import Enum Month=Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) print(Month.May) print(Month.May.name) print(Month.May.value) 結果 Month.May May 5
for-in 所有集合
from enum import Enum Month=Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) for name, member in Month.__members__.items(): print("%s => %s : %d" %(name, member, member.value)) 結果: Jan => Month.Jan : 1 Feb => Month.Feb : 2 Mar => Month.Mar : 3 Apr => Month.Apr : 4 May => Month.May : 5 Jun => Month.Jun : 6 Jul => Month.Jul : 7 Aug => Month.Aug : 8 Sep => Month.Sep : 9 Oct => Month.Oct : 10 Nov => Month.Nov : 11 Dec => Month.Dec : 12
自訂列舉
若想要更細部的控制列舉的編號, 可以採用自訂列舉. 在下面代碼中, 裝飾器@unique可以協助檢查是否有重複值, 不論是 name 或者是 value, 任何一個重複, 執行時期都會跳出例外
from enum import Enum, unique @unique class Solar(Enum): Mercury = 10 Venus = 20 Earth = 30 Mars = 40 Jupiter = 50 Saturn = 60 Uranus = 70 Neptuen = 80 Pluto = 90 print("Enum:%s, name:%s, value:%d" % (Solar.Venus, Solar.Venus.name, Solar.Venus.value )) print(Solar(40)) 結果 : Enum:Solar.Venus, name:Venus, value:20 Solar.Mars