python 枚舉類型


在python中枚舉是一種類(Enum,IntEnum),存放在enum模塊中。枚舉類型可以給一組標簽賦予一組特定的值。

枚舉的特點:

  1. 枚舉類中不能存在相同的標簽名
  2. 枚舉是可迭代的
  3. 不同的枚舉標簽可以對應相同的值,但它們都會被視為該值對應第一個標簽的別名
  4.  如果要限制定義枚舉時,不能定義相同值的成員。可以使用裝飾器@unique【要導入unique模塊】
  5. 枚舉成員之間不能進行大小比較,可進行等值和同一性比較
  6. 枚舉成員為單例,不可實例化,不可更改

 

在開始前,我們先定義一個枚舉類:

from enum import Enum
class Vip(Enum):
    MONDAY = 0
    TUESDAY = 1
    WEDNESDAY = 2
    THURSDAY = 3
    FRIDAY = 4
    SATURDAY = 5
    SUNDAY = 6

 

示例一:獲取在枚舉類中定義的枚舉成員

# 方法一:
print(Vip.MONDAY)
print(type(Vip.MONDAY))
# 方法二
print(Vip['TUESDAY'])
print(type(Vip.TUESDAY))
# 方法三
print(Vip(2))
print(type(Vip(2)))

-------------------
Vip.MONDAY
<enum 'Vip'>
Vip.TUESDAY
<enum 'Vip'>
Vip.WEDNESDAY
<enum 'Vip'>

 

示例二:枚舉成員中包含標簽名和該標簽對應的值

today = Vip.FRIDAY
print('Today is ' + today.name + '. The number of today is ' + str(today.value))

----------------------------------------
Today is FRIDAY. The number of today is 4

 

示例三:包含相同值的枚舉類的迭代,默認情況下不會輸出別名,但可通過迭代__members__來顯示所有成員標簽

from enum import Enum
class Week(Enum):
    MONDAY = 0
    TUESDAY = 1
    FRIDAY = 4
    TODAY = 4    # 以FRIDAY別名的形式存在
for day in Week:
    print(day)
print('******************')
for day in Week.__members__:
    print(day)

----------------------
Week.MONDAY
Week.TUESDAY
Week.FRIDAY
******************
MONDAY
TUESDAY
FRIDAY
TODAY

 

示例四:限定不含相同值的枚舉類@unique

from enum import Enum, unique
@unique
class Week(Enum):
    MONDAY = 0
    TUESDAY = 1
    FRIDAY = 4
    TODAY = 4 

--------------------------------------
ValueError: duplicate values found in <enum 'Week'>: TODAY -> FRIDAY

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM