Python中的枚舉
阿新 • • 發佈:2017-06-16
imp class 數據結構 檢查 blue 3.4 結構 nbsp num
在Python中想要實現枚舉功能的方式比較多,可以通過字典這一數據結構,利用鍵與值的對應關系,可以實現枚舉的功能。
my_Enum={ ‘red‘:1, ‘yellow‘:2, ‘blue‘:3 } print(my_Enum[‘red‘])
也可以使用類來建立一個屬性名與屬性值之間的對應關系來實現枚舉的功能,然後用.操作符來讀取
class my_Enum { red=1, yellow=2, blue=3 } my_Enum.red
但是用以上兩種方式出現的問題也是很明顯的:
1.枚舉值可以修改
2.用類定義的話,這些枚舉功能的類可以被實例化
3.枚舉值是否重復無法檢查
在Python3.4引入了enum模塊,這個模塊就是為了解決上面所說到的問題的,使用的時候首先引入模塊:
import enum
enum裏面提供了Enum和IntEnum等類,可以用來繼承。
當然,這些類就被限制了,
1.不能被繼承
2.定義之後不能在類內修改
3.枚舉名稱不能重復。如果有值重復的情況,那麽後者的名稱將會是前者的別名,其實是一個對象。
要控制枚舉值不能重復,[email protected]
對枚舉類的操作:
from enum import IntEnum class my_Enum(IntEnum): red=1, green=2, blue=3, what=3, yellow=9 #按名字取出枚舉的值 print(my_Enum[‘red‘]) print(my_Enum[‘what‘]) #枚舉的值返回枚舉名字 print(my_Enum(9)) print(my_Enum[‘red‘].name) print(my_Enum[‘red‘].value) #可以用for in叠代 for i in my_Enum: print(i.name,‘->‘,i.value)
運行結果:
my_Enum.red my_Enum.blue my_Enum.yellow red1 red -> 1 green -> 2 blue -> 3 yellow -> 9
Python中的枚舉