標籤:sep 如何 ber mem val class 一個 blog python
枚舉類型enum是比較重要的一個資料類型,它是一種資料類型而不是資料結構,我們通常將一組常用的常數聲明成枚舉類型方便後續的使用。當一個變數有幾種可能的取值的時候,我們將它定義為枚舉類型。在Python中是如何?的呢?
補充:很多初學者一下子不明白枚舉是什麼意思,比如我們有段程式很多地方需要用到12個月月份,可以將每個月份都定義出來使用: String Jan = "1月份",但是這樣用起來很不好用,需要寫12個,然後後續用的時候也不清晰明白,那麼枚舉類型就可以解決問題,它將這12個月份羅列出來,然後每個月份對應一個值(從0到...),我們用的時候可以直接用聲明的枚舉類型帶出來我們想要的值。
我們聲明一個月份的枚舉類型。
>>> 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(name,‘=>‘,member,‘,‘,member.value)(‘Jan‘, ‘=>‘, <Month.Jan: 1>, ‘,‘, 1)(‘Feb‘, ‘=>‘, <Month.Feb: 2>, ‘,‘, 2)(‘Mar‘, ‘=>‘, <Month.Mar: 3>, ‘,‘, 3)(‘Apr‘, ‘=>‘, <Month.Apr: 4>, ‘,‘, 4)(‘May‘, ‘=>‘, <Month.May: 5>, ‘,‘, 5)(‘Jun‘, ‘=>‘, <Month.Jun: 6>, ‘,‘, 6)(‘Jul‘, ‘=>‘, <Month.Jul: 7>, ‘,‘, 7)(‘Aug‘, ‘=>‘, <Month.Aug: 8>, ‘,‘, 8)(‘Sep‘, ‘=>‘, <Month.Sep: 9>, ‘,‘, 9)(‘Oct‘, ‘=>‘, <Month.Oct: 10>, ‘,‘, 10)(‘Nov‘, ‘=>‘, <Month.Nov: 11>, ‘,‘, 11)(‘Dec‘, ‘=>‘, <Month.Dec: 12>, ‘,‘, 12)
首先匯入enum模組,然後聲明枚舉類型名及它的可能取值。還有一種方式我們定義Enum子類來定義一個枚舉類。
>>> from enum import Enum,unique>>> @uniqueclass Weekday(Enum):Sun = 0Mon = 1Tue = 2Wed = 3Thu = 4Fri = 5Sat = 6
@unique這個裝飾器是幫我們檢查是否有重複的值。取出枚舉類型裡面的值也是多種多樣的。
>>> print(Weekday.Fri)
Weekday.Fri
>>> print(Weekday(2))
Weekday.Tue
>>> a = Weekday(2)
>>> print a
Weekday.Tue
>>>
從最後一個也可以看出定義枚舉類和定義普通的類是有區別的,開頭也說了枚舉類型就是一組常量,我們就是為了以後方便使用將一組可能取值的常量放到一個地方,根據需要將值取出來。
人生苦短之Python枚舉類型enum