enum模組提供了列舉型別的支援。列舉型別是由乙個名稱和乙個統一值來組成,值是常量的值,它們之間可以通過名稱進行比較和引用,還可以迭代訪問。
本模組主要定義了兩種列舉型別:enum
和intenum
。定義了乙個裝飾器函式
unique()
,以便保證所有列舉常量的唯一性。
class enum.enum
構造列舉常量的基類。
例子:#python 3.4
import enum
class color(enum.enum):
red = 1
green = 2
blue = 3
print(color.red, repr(color.red))
print(color.green)
print(color.blue)
結果輸出如下:
color.red
color.green
color.blue
class enum.intenum
構造以整數值為列舉值的基類。本類裡的列舉值可以與整數相比較,普通的列舉類是不能與整數相比較的。此類主要用為了舊的**相容,或者大大地提高了便利性的場合,否則還是使用普通的列舉類會比較好,因為它不與普通型別相互發生作用,避免了一些程式設計上失誤。
例子:#python 3.4
import enum
class color(enum.intenum):
red = 1
green = 2
blue = 3
print(color.red, repr(color.red))
print(color.green)
print(color.blue)
print(color.red == 1)
結果輸出如下:
color.red
color.green
color.blue
true
enum.unique()
本裝飾器函式保證了每個名稱只能繫結乙個值,達到列舉值的唯一性。
例子:#python 3.4
import enum
class color(enum.intenum):
red = 1
green = 2
blue = 3
red = 5
print(color.red, repr(color.red))
print(color.green)
print(color.blue)
結果輸出如下:
traceback (most recent call last):
file "f:/temp/pywin/enum1.py", line 4, in
class color(enum.intenum):
file "f:/temp/pywin/enum1.py", line 8, in color
red = 5
file "c:\python34\lib\enum.py", line 66, in __setitem__
raise typeerror('attempted to reuse key: %r' % key)
typeerror: attempted to reuse key: 'red'
列舉常量可以迭代遍歷:
例子:#python 3.4
import enum
class color(enum.intenum):
red = 1
green = 2
blue = 3
for i in color:
print(i)
結果輸出如下:
color.red
color.green
color.blue
列舉常量訪問方式:
例子:#python 3.4
import enum
class color(enum.intenum):
red = 1
green = 2
blue = 3
print(color(2))
print(color['red'])
red = color.red
print(red.name, red.value)
結果輸出如下:
color.green
color.red
red 1
在這裡提供三種訪問方式:color(2), color[『red』], red.value。
通過函式api
方式建立列舉常量:
例子:#python 3.4
import enum
animal = enum.enum('animal', 'ant bee cat dog')
print(animal)
print(list(animal))
結果輸出如下:
[, , , ]
避免每個列舉常量都需要指定值:
例子:#python 3.4
import enum
class autonumber(enum.enum):
def __new__(cls):
value = len(cls.__members__) + 1
obj = object.__new__(cls)
obj._value_ = value
return obj
class color(autonumber):
red = ()
green = ()
blue = ()
for i in color:
print(repr(i))
結果輸出如下:
列舉型別(enum)
enum 是計算機程式語言中的一種資料型別 列舉型別。應用場景 有些變數的取值被要求在乙個確定的範圍內,例如一周有 7天,一年 12個月,或者使用者自定義的今天安排要學習的百家姓有 4個等等。定義 在列舉型別的定義中列舉出所有的可能取值,該變數的取值只能是所列舉的範圍。格式 enum 列舉名 enu...
enum列舉型別。
列舉 定義常量符號,就是巨集定義常數的集合體 比如 四季,星期,意義相關的常數 狀態機 1 根據當前狀態,這個週期結束,就成了下乙個狀態。2 根據你的當前狀態,還和你的輸入有關。比如 fpga,gui 通過列舉,可以將一些常量賦值給某些固定的字串常量。可以通過改變列舉型別的狀態來達到自己的一些目的。...
enum列舉型別
public enum mm aa,bb,cc,dd enum列舉定義好之後,經過編譯後,會變成乙個類,類裡面包含了所有的列舉常量,對於每個列舉常量,主要包含了2個內容 name 和 ordinal,name就是名字,比如上面的 aa,bb 這些就是名字,ordinal 是 int 型別,儲存的是位...