Python深入淺出分析enum枚舉類
枚舉類Enum
枚舉類,在企業開發中用的比較多
當我們需要定義常量時,一個辦法是用大寫的變量通過整數來定義,例如月份:
# 當項目中需要使用12個月份時
JAN = 1
FEB = 2
…
NOV = 11
DEC = 12
但是這樣的定義的類型是 int
,並且仍然是變量,並且在運算中,無法時時創建對應的值,當然這種指代是以更好的方式去使用變量數值。
這裡存在更好的方法是為這樣的枚舉類型定義一個class
類型,然後,每個常量都是class
的一個唯一實例。Python提供瞭 Enum
類來實現這個功能。
優化如下
# -*- coding: utf-8 -*- from enum import Enum # 枚舉中,一個名字對應一個值 Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Otc', 'Nov', 'Dec'))
這樣我們就獲得瞭 Month
類型的枚舉類,可以直接使用 Month.Jan
來引用一個常量,或者枚舉它的所有成員通過for
循環進行取值,
Month.__members__
是Month的內置變量,可以打印成員標簽,
如果在這個方法調用上.items()
函數所有成員都打印出來,數據類型為元組
for name, member in Month.__members__.items():
print(f'{name} => {member} , {member.value}')+
定義一個顏色常量枚舉
# -*- coding: utf-8 -*- from enum import Enum # 枚舉中 一個一個名字對應一個值 Month = Enum('抬頭-Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) print(Month.__members__) # 枚舉中的值自動從1開始,不會重復 # 得到三月份的值 print(Month['Mar'].value) # 3 # 根據(2)來獲得月份名字 print(Month(2).name) # Feb # 定義一個顏色的常量枚舉 class Color(Enum): # 第二種:自定義一個枚舉類 red = 100 green = 200 blue = 300 yellow = 200 # 不允許key相同或者value,如果value重復,根據value取name隻能取第一個 print(Color(200)) # Color.green
不允許key相同或者value相同,如果value重復,根據value取name隻能取第一個
總結
1.枚舉類不能用來實例化對象
2.訪問枚舉類中的某一項,直接使用類名訪問加上要訪問的項即可,比如 color.RED
3.枚舉類裡面定義的 Key = Value,在類外部不能修改 Value 值
4.枚舉項可以用來比較,使用 ==,或者 is
5.枚舉類中的 Key 不能相同,Value 可以相同,但是 Value 相同的各項 Key 都會當做別名
6.枚舉類可以用 for 進行遍歷,members.items() 可以遍歷出含有別名的類
7.如果要枚舉類中的 key 也不能相同,需要導入 unique 對枚舉類進行裝飾
到此這篇關於Python深入淺出分析enum枚舉類的文章就介紹到這瞭,更多相關Python枚舉類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python中Enum使用的幾點註意事項
- Python match語句的具體使用
- Python 打印自己設計的字體的實例講解
- C++11 強類型枚舉相關總結
- C語言數據類型枚舉enum全面詳解示例教程