建議標識名字用大寫數據庫
1.枚舉類:spa
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW) #VIP.YELLOW #關注的是它的標籤不是數字
2 枚舉和普通類相比的優點code
三種其餘的普通方法表示枚舉:blog
(1) yellow = 1 green = 2 (2)字典的表示方式 {'yellow':1,'green':2} (3)類的表示方式 class TypeDiamond(): yellow = 1 green = 2
這些方式,它們都是可變的,能夠在代碼中輕易的更改值,且沒有防止相同標籤的功能。繼承
3.枚舉的特色:it
from enum import Enum class VIP(Enum): YELLOW = 1 #YELLOW= 2 #不可重複,報錯 BLACK = 3 RED = 4 print(VIP.YELLOW) #VIP.YELLOW = 6 #不可更改,報錯
1.獲取枚舉類型下某一數值:class
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.YELLOW.value) print(VIP.YELLOW.name) print(VIP.YELLOW) print(VIP['YELLOW']) #1 #枚舉值 #YELLOW #<class 'str'> 獲取標籤名 #VIP.YELLOW #<enum 'VIP'> 枚舉類型 #VIP.YELLOW
2.枚舉是能夠遍歷的:import
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 for v in VIP : print(v) #VIP.YELLOW VIP.GREEN VIP.BLACK VIP.RED
1.兩個枚舉之間能夠使用等值比較(==),枚舉與數值比較的判斷結果不對。兩個枚舉之間不能進行大小比較。循環
2.支持is操做:遍歷
result = VIP.GREEN is VIP.GREEN #True
3.兩個大類之間也能夠進行等值比較,不過結果是False:
from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 class VIP1(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP.GREEN ==VIP1.GREEN) #False
1.枚舉的數值能夠相同,在這種狀況下,將第二種枚舉類型當作別名。遍歷時不會打印別名:
class VIP(Enum): YELLOW = 1 GREEN = 1 #別名,不會報錯 BLACK = 3 RED = 4 print(VIP.GREEN) #VIP.YELLOW
2.把別名加入遍歷循環:
(1) for v in VIP.__members__.items() : print(v) #('YELLOW', <VIP.YELLOW: 1>) #('GREEN', <VIP.GREEN: 1>) #('BLACK', <VIP.BLACK: 3>) #('RED', <VIP.RED: 4>) (2) 或者遍歷__members__: for v in VIP.__members__: print(v) #YELLOW #GREEN #BLACK #RED
1.在數據庫裏通常存儲數值或者標籤名字來表明枚舉類型,推薦存儲數值,數字佔用的空間更小。可是不建議在代碼種用數值表明枚舉,可讀性不強。
2.如何將數字轉換成枚舉類型:
from enum import Enum a = 1 class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4 print(VIP(a)) #轉換枚舉類型 #VIP.YELLOW
1.要求每一個枚舉類型都是數字的時候繼承IntEnum:
from enum import IntEnum class VIP(IntEnum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4
2.限制不一樣的枚舉類型不能取相同的值:
from enum import Enum from enum import IntEnum,unique @unique #裝飾器 class VIP(IntEnum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4
枚舉類型不能實例化,屬於單例模式