亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

枚舉類(lèi)別的使用

實(shí)際開(kāi)發(fā)中,我們離不開(kāi)定義常數(shù),當(dāng)我們需要定義常數(shù)時(shí),其中一個(gè)辦法是用大寫(xiě)變數(shù)透過(guò)整數(shù)來(lái)定義,例如月份:

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12

當(dāng)然這樣做簡(jiǎn)單快捷,缺點(diǎn)是類(lèi)型是int ,並且仍然是變數(shù)。

那有沒(méi)有什麼好的方法呢?

這時(shí)候我們定義一個(gè) class 類(lèi)型,每個(gè)常數(shù)都是 class 裡面唯一的實(shí)例。正好Python 提供了Enum 類(lèi)別來(lái)實(shí)現(xiàn)這個(gè)功能如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
# 遍歷枚舉類(lèi)型
for name, member in Month.__members__.items():
    print(name, '---------', member, '----------', member.value)
# 直接引用一個(gè)常量
print('\n', Month.Jan)

輸出的結(jié)果如下:

a41b1b020149ba50432eae7d4913fa0.png

可見(jiàn),我們可以直接使用Enum 來(lái)定義一個(gè)枚舉類(lèi)。上面的程式碼,我們創(chuàng)建了一個(gè)有關(guān)月份的枚舉類(lèi)型Month ,這裡要注意的是構(gòu)造參數(shù),第一個(gè)參數(shù)Month 表示的是該枚舉類(lèi)的類(lèi)名,第二個(gè)tuple 參數(shù),表示的是枚舉類(lèi)別的值;當(dāng)然,枚舉類(lèi)別透過(guò)__members__ 遍歷它的所有成員的方法。注意的一點(diǎn)是 , member.value 是自動(dòng)賦給成員的 int型別的常數(shù),預(yù)設(shè)是從 1 開(kāi)始的。而 Enum 的成員皆為單例(Singleton),且不可實(shí)例化,不可變更

繼續(xù)學(xué)習(xí)
||
提交重置程式碼