1. 程式人生 > 其它 >學習python(十三)——列舉類

學習python(十三)——列舉類

技術標籤:python

一些具有特殊含義的類,其例項化物件的個數往往是固定的,比如用一個類表示月份,則該類的例項物件最多有 12 個;再比如用一個類表示季節,則該類的例項化物件最多有 4 個。針對這種特殊的類,Python3.4 中新增加了 Enum 列舉類。也就是說,對於這些例項化物件個數固定的類,可以用列舉類來定義。如果想將一個類定義為列舉類,只需要令其繼承自 enum 模組中的 Enum 類即可。

例如:

from enum import Enum
class Color(Enum):
    # 為序列值指定value值
    red = 1
    green = 2
    blue = 3

在 Color 列舉類中,red、green、blue 都是該類的成員(可以理解為是類變數)。注意,列舉類的每個成員都由 2 部分組成,分別為 name 和 value,其中 name 屬性值為該列舉值的變數名(如 red),value代表該列舉值的序號(序號通常從 1 開始)。Enum() 函式可接受 2 個引數,第一個用於指定列舉類的類名,第二個引數用於指定列舉類中的多個成員。

需要注意的是,列舉類中各個成員的值,不能在類的外部做任何修改。除此之外,該列舉類還提供了一個 __members__ 屬性,該屬性是一個包含列舉類中所有成員的字典,通過遍歷該屬性,也可以訪問列舉類中的各個成員。

Python 列舉類中各個成員必須保證 name 互不相同,但 value 可以相同。