筆記: ...
筆記:
一:枚舉類型的定義
二:枚舉類和普通類的區別
1:值不可變
2:具有防止相同標簽得功能,不同標簽的值可以相同!
三:枚舉類型、枚舉值、枚舉名稱
1:VIP.YELLOW.Value 獲得標簽的值
2:VIP.BLACK.name 獲取標簽名稱
3:枚舉裡面的部分為枚舉類型!
四:枚舉之間的比較
1: 支持等值比較和is, 不支持大小比較
2: 不同枚舉類之間的比較
五:枚舉的註意事項
不同標簽的值相同的時候,第二種會被當做一種別名,調用時會被覆蓋!
遍歷的時候不會被列印出來,解決方法是:
for v in VIP.__members__.items():
print(v)
六:枚舉轉換
從資料庫中去除某一個數值對應的值(a = 1),根據a的值匹配枚舉的類型
a = 1
print(VIP(a))
七:其他
1:IntEnum類型說明:枚舉的都是int類型的!
2:限制枚舉類型的值不能一樣
-------23種設計模式-------實踐中學習--------
-------嘗試寫一些包和類庫------------------
CODE:
1 # ----------------------------------------------# 2 # 定義一個枚舉類型 3 # ----------------------------------------------# 4 5 from enum import Enum 6 from enum import IntEnum, unique 7 8 9 class VIP(Enum): 10 YELLOW = 1 11 GREEN = 2 12 BLACK = 3 13 RED = 4 14 15 16 class Common: 17 YELLOW = 2 18 19 20 # 註意這裡顯示的是VIP.Black而不是3,枚舉的意義重在標簽而不是標簽的值 21 print(VIP.BLACK) 22 23 24 # ----------------------------------------------------# 25 # 枚舉類和普通類的區別 26 # 字典和普通類封裝數據: 1:可變 2:沒有防止相同標簽得功能 27 # ----------------------------------------------------# 28 29 # VIP.GREEN = 6 # 當改變值得時候報錯 30 31 Common.YELLOW = 9 # 改變類變數的值 32 print(Common.YELLOW) 33 x = Common() # 類的實例化 34 print(x.YELLOW) 35 36 # ----------------------------------------------# 37 # 枚舉類型、枚舉值、枚舉名稱 38 # ----------------------------------------------# 39 print("Black = ", VIP.BLACK.value) # get value of Enum 40 41 print("name = ", VIP.BLACK.name) # get value of Name,the type of name is str 42 43 print(VIP.BLACK) # 名字為枚舉類型 44 45 print(VIP['BLACK']) 46 47 # 枚舉可以被遍歷 48 for v in VIP: 49 print(v) 50 51 52 # ----------------------------------------------# 53 # 枚舉之間的比較,支持等值比較,不支持大小比較 54 # ----------------------------------------------# 55 56 result1 = VIP.GREEN == VIP.BLACK 57 result2 = VIP.GREEN.value == 2 # 註意這裡的結果 58 print(result1, result2) 59 60 61 class VIP1(Enum): 62 YELLOW = 1 63 GREEN = 2 64 BLACK = 3 65 RED = 4 66 WRITE = 5 67 68 69 result3 = VIP.GREEN == VIP1.GREEN 70 print(result3) 71 72 # ----------------------------------------------# 73 # 枚舉註意事項 74 # ----------------------------------------------# 75 76 77 class VIP2(Enum): 78 YELLOW = 1 79 GREEN = 1 # 別名 80 BLACK = 3 81 RED = 4 82 83 84 for v in VIP2: 85 print(v) 86 87 for v in VIP2.__members__.items(): 88 print(v) 89 90 for v in VIP2.__members__: 91 print(v) 92 93 # ----------------------------------------------# 94 # 枚舉轉換 95 # ----------------------------------------------# 96 97 a = 1 98 print(VIP(a)) # 可以看做是類型轉換 99 100 # ----------------------------------------------# 101 # 枚舉補充 102 # ----------------------------------------------# 103 104 # 1:IntEnum類型說明 105 106 107 class VIP3(Enum): 108 YELLOW = 1 109 GREEN = "str" # 別名 110 BLACK = 3 111 RED = 4 112 113 114 class VIP4(IntEnum): 115 YELLOW = 1 116 # GREEN = 'str' # 字元串報錯 117 BLACK = 3 118 RED = 4 119 120 121 # 2:限制枚舉類型的值不能一樣 122 @unique 123 class VIP6(Enum): 124 YELLOW = 1 125 GREEN = 1 # 當值相同的時候會報錯! 126 BLACK = 3 127 RED = 4