Python深入淺出分析enum枚舉類(lèi)

目錄

枚舉類(lèi)Enum

枚舉類(lèi),在企業(yè)開(kāi)發(fā)中用得比較多

當(dāng)我們需要定義常量時(shí),一個(gè)辦法是用大寫(xiě)得變量通過(guò)整數(shù)來(lái)定義,例如月份:

# 當(dāng)項(xiàng)目中需要使用12個(gè)月份時(shí)
JAN = 1
FEB = 2
...
NOV = 11
DEC = 12

但是這樣得定義得類(lèi)型是 int ,并且仍然是變量,并且在運(yùn)算中,無(wú)法時(shí)時(shí)創(chuàng)建對(duì)應(yīng)得值,當(dāng)然這種指代是以更好得方式去使用變量數(shù)值。

這里存在更好得方法是為這樣得枚舉類(lèi)型定義一個(gè)class類(lèi)型,然后,每個(gè)常量都是class得一個(gè)唯一實(shí)例。Python提供了 Enum 類(lèi)來(lái)實(shí)現(xiàn)這個(gè)功能。

優(yōu)化如下

# -*- coding: utf-8 -*-from enum import Enum# 枚舉中,一個(gè)名字對(duì)應(yīng)一個(gè)值Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Otc', 'Nov', 'Dec'))

這樣我們就獲得了 Month 類(lèi)型得枚舉類(lèi),可以直接使用 Month.Jan 來(lái)引用一個(gè)常量,或者枚舉它得所有成員通過(guò)for循環(huán)進(jìn)行取值,

Month.__members__是Month得內(nèi)置變量,可以打印成員標(biāo)簽,

如果在這個(gè)方法調(diào)用上.items()函數(shù)所有成員都打印出來(lái),數(shù)據(jù)類(lèi)型為元組

for name, member in Month.__members__.items():

    print(f'{name} => {member} , {member.value}')+

定義一個(gè)顏色常量枚舉

# -*- coding: utf-8 -*-from enum import Enum# 枚舉中 一個(gè)一個(gè)名字對(duì)應(yīng)一個(gè)值Month = Enum('抬頭-Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))print(Month.__members__)  # 枚舉中得值自動(dòng)從1開(kāi)始,不會(huì)重復(fù)# 得到三月份得值print(Month['Mar'].value)  # 3# 根據(jù)(2)來(lái)獲得月份名字print(Month(2).name)  # Feb# 定義一個(gè)顏色得常量枚舉class Color(Enum):  # 第二種:自定義一個(gè)枚舉類(lèi)    red = 100    green = 200    blue = 300    yellow = 200  # 不允許key相同或者value,如果value重復(fù),根據(jù)value取name只能取第一個(gè)print(Color(200))  # Color.green

不允許key相同或者value相同,如果value重復(fù),根據(jù)value取name只能取第一個(gè)

總結(jié)

1.枚舉類(lèi)不能用來(lái)實(shí)例化對(duì)象

2.訪問(wèn)枚舉類(lèi)中得某一項(xiàng),直接使用類(lèi)名訪問(wèn)加上要訪問(wèn)得項(xiàng)即可,比如 color.RED

3.枚舉類(lèi)里面定義得 Key = Value,在類(lèi)外部不能修改 Value 值

4.枚舉項(xiàng)可以用來(lái)比較,使用 ==,或者 is

5.枚舉類(lèi)中得 Key 不能相同,Value 可以相同,但是 Value 相同得各項(xiàng) Key 都會(huì)當(dāng)做別名

6.枚舉類(lèi)可以用 for 進(jìn)行遍歷,members.items() 可以遍歷出含有別名得類(lèi)

7.如果要枚舉類(lèi)中得 key 也不能相同,需要導(dǎo)入 unique 對(duì)枚舉類(lèi)進(jìn)行裝飾

到此這篇關(guān)于Python深入淺出分析enum枚舉類(lèi)得內(nèi)容就介紹到這了,更多相關(guān)Python枚舉類(lèi)內(nèi)容請(qǐng)搜索之家以前得內(nèi)容或繼續(xù)瀏覽下面得相關(guān)內(nèi)容希望大家以后多多支持之家!

聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評(píng)論
更多 網(wǎng)友評(píng)論1 條評(píng)論)
暫無(wú)評(píng)論

返回頂部

主站蜘蛛池模板: 欧美人妻一区二区三区| 亚洲一区中文字幕在线电影网| 中文字幕在线视频免费| 9久久这里只有精品国产| 国产一区二区三区影院| 欧美午夜片欧美片在线观看 | 精精国产www视频在线观看免费 | 国产在线无码视频一区二区三区| 亚洲国产精品自产在线播放 | 福利聚合app绿巨人入口| 日韩福利在线视频| 国产激情视频一区二区三区| 亚洲一区在线视频观看| youjizz国产| 日韩精品久久无码人妻中文字幕| 国产性生交xxxxx免费| 久久久成人影院| 蜜臀AV一区二区| 成人欧美一区二区三区黑人 | 伊人情人综合网| 久久中文字幕网站篠田优| 色狠狠一区二区三区香蕉| 成人在线手机视频| 伊人久久精品线影院| 91秦先生在线| 秋葵视频在线观看在线下载| 天天综合网天天做天天受| 亚洲熟女综合一区二区三区| 两个人看的视频高清在线www| 日韩毛片无码永久免费看| 国产94在线传媒麻豆免费观看| 亚洲AV无码乱码麻豆精品国产 | 舌头伸进去里面吃小豆豆| 孩交精品xxxx视频视频| 四虎影院成人在线观看| t66y最新地址| 精品久久久久久| 妖精动漫在线观看| 凹凸在线无码免费视频| 99久久婷婷国产综合亚洲| 男女久久久国产一区二区三区|