5 9 enum 支援列舉型別

2021-07-10 01:56:23 字數 2866 閱讀 8068

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 型別,儲存的是位...