您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python枚舉方法怎么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python枚舉方法怎么用”文章能幫助大家解決問題。
在Python中,枚舉和我們在對象中定義的類變量時一樣的,每一個類變量就是一個枚舉項。
#調用枚舉成員的 3 種方式print(Color.red)print(Color['red'])print(Color(1))#調取枚舉成員中的 value 和 nameprint(Color.red.value)print(Color.red.name)#遍歷枚舉類中所有成員的 2 種方式for color in Color: print(color)
如果想將一個類定義為枚舉類,只需要令其繼承自 enum 模塊中的 Enum 類即可。例如在上面程序中,Color 類繼承自 Enum 類,則證明這是一個枚舉類。
在 Color 枚舉類中,red、green、blue 都是該類的成員(可以理解為是類變量)。注意,枚舉類的每個成員都由 2 部分組成,分別為 name 和 value,其中 name 屬性值為該枚舉值的變量名(如 red),value 代表該枚舉值的序號(序號通常從 1 開始)。
和普通類的用法不同,枚舉類不能用來實例化對象,但這并不妨礙我們訪問枚舉類中的成員。訪問枚舉類成員的方式有多種,例如以 Color 枚舉類為例,在其基礎上添加如下代碼:
#調用枚舉成員的 3 種方式print(Color.red)print(Color['red'])print(Color(1))#調取枚舉成員中的 value 和 nameprint(Color.red.value)print(Color.red.name)#遍歷枚舉類中所有成員的 2 種方式for color in Color: print(color)
程序輸出結果為:
Color.red Color.red Color.red 1 red Color.red Color.green Color.blue
枚舉類成員之間不能比較大小,但可以用 == 或者 is 進行比較是否相等,例如:
print(Color.red == Color.green)print(Color.red.name is Color.green.name)
輸出結果為:
Flase Flase
需要注意的是,枚舉類中各個成員的值,不能在類的外部做任何修改,也就是說,下面語法的做法是錯誤的:
Color.red = 4
除此之外,該枚舉類還提供了一個 members 屬性,該屬性是一個包含枚舉類中所有成員的字典,通過遍歷該屬性,也可以訪問枚舉類中的各個成員。例如:
for name,member in Color.__members__.items(): print(name,"->",member)
輸出結果為:
red -> Color.red green -> Color.green blue -> Color.blue
值得一提的是,Python 枚舉類中各個成員必須保證 name 互不相同,但 value 可以相同,舉個例子:
#引入 uniquefrom enum import Enum,unique#添加 unique 裝飾器@unique class Color(Enum): # 為序列值指定value值 red = 1 green = 1 blue = 3print(Color['green'])
輸出結果為:
Color.red
可以看到,Color 枚舉類中 red 和 green 具有相同的值(都是 1),Python 允許這種情況的發生,它會將 green 當做是 red 的別名,因此當訪問 green 成員時,最終輸出的是 red。
在實際編程過程中,如果想避免發生這種情況,可以借助 @unique 裝飾器,這樣當枚舉類中出現相同值的成員時,程序會報 ValueError 錯誤。例如:
#引入 uniquefrom enum import Enum,unique#添加 unique 裝飾器@unique class Color(Enum): # 為序列值指定value值 red = 1 green = 1 blue = 3print(Color['green'])
運行程序會報錯:
Traceback (most recent call last): File “D:\python3.6\demo.py”, line 3, in class Color(Enum): File “D:\python3.6\lib\enum.py”, line 834, in unique (enumeration, alias_details)) ValueError: duplicate values found in
除了通過繼承 Enum 類的方法創建枚舉類,還可以使用 Enum() 函數創建枚舉類。例如:
from enum import Enum#創建一個枚舉類Color = Enum("Color",('red','green','blue'))#調用枚舉成員的 3 種方式print(Color.red)print(Color['red'])print(Color(1))#調取枚舉成員中的 value 和 nameprint(Color.red.value)print(Color.red.name)#遍歷枚舉類中所有成員的 2 種方式for color in Color: print(color)
Enum() 函數可接受 2 個參數,第一個用于指定枚舉類的類名,第二個參數用于指定枚舉類中的多個成員。
如上所示,僅通過一行代碼,即創建了一個和前面的 Color 類相同的枚舉類。運行程序,其輸出結果為:
Color.red Color.red Color.red 1 red Color.red Color.green Color.blue
關于“Python枚舉方法怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。