最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python枚舉類定義和使用方法

 更新時(shí)間:2022年05月20日 17:07:54   作者:Python熱愛者  
這篇文章主要介紹了Python枚舉類定義和使用方法,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言:

一些具有特殊含義的類,其實(shí)例化對(duì)象的個(gè)數(shù)往往是固定的,比如用一個(gè)類表示月份,則該類的實(shí)例對(duì)象最多有 12 個(gè);再比如用一個(gè)類表示季節(jié),則該類的實(shí)例化對(duì)象最多有 4 個(gè)。

針對(duì)這種特殊的類,Python 3.4 中新增加了 Enum 枚舉類。也就是說,對(duì)于這些實(shí)例化對(duì)象個(gè)數(shù)固定的類,可以用枚舉類來定義。

例如,下面程序演示了如何定義一個(gè)枚舉類:

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

如果想將一個(gè)類定義為枚舉類,只需要令其繼承自 enum 模塊中的 Enum 類即可。例如在上面程序中,Color 類繼承自 Enum 類,則證明這是一個(gè)枚舉類。

在 Color 枚舉類中,red、green、blue 都是該類的成員(可以理解為是類變量)。注意,枚舉類的每個(gè)成員都由 2 部分組成,分別為 name 和 value,其中 name 屬性值為該枚舉值的變量名(如 red),value 代表該枚舉值的序號(hào)(序號(hào)通常從 1 開始)。

和普通類的用法不同,枚舉類不能用來實(shí)例化對(duì)象,但這并不妨礙我們?cè)L問枚舉類中的成員。訪問枚舉類成員的方式有多種,例如以 Color 枚舉類為例,

在其基礎(chǔ)上添加如下代碼:

#調(diào)用枚舉成員的 3 種方式
print(Color.red)
print(Color['red'])
print(Color(1))
#調(diào)取枚舉成員中的 value 和 name
print(Color.red.value)
print(Color.red.name)
#遍歷枚舉類中所有成員的 2 種方式
for color in Color:
print(color)

程序輸出結(jié)果為:

Color.red
Color.red
Color.red
1
red
Color.red
Color.green
Color.blue

枚舉類成員之間不能比較打下,但可以用 == 或者 is 進(jìn)行比較是否相等,例如

print(Color.red == Color.green)
print(Color.red.name is Color.green.name)

輸出結(jié)果為:

Flase
Flase

需要注意的是,枚舉類中各個(gè)成員的值,不能在類的外部做任何修改,也就是說,下面語法的做法是錯(cuò)誤的:

Color.red = 4

除此之外,該枚舉類還提供了一個(gè)??__members__??屬性,該屬性是一個(gè)包含枚舉類中所有成員的字典,通過遍歷該屬性,也可以訪問枚舉類中的各個(gè)成員。

例如:

for name,member in Color.__members__.items():
print(name,"->",member)

輸出結(jié)果為:

red -> Color.red
green -> Color.green
blue -> Color.blue

值得一提的是,Python 枚舉類中各個(gè)成員必須保證 name 互不相同,但 value 可以相同

舉個(gè)例子:

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

輸出結(jié)果為:

Color.red

可以看到,Color 枚舉類中 red 和 green 具有相同的值(都是 1),Python 允許這種情況的發(fā)生,它會(huì)將 green 當(dāng)做是 red 的別名,因此當(dāng)訪問 green 成員時(shí),最終輸出的是 red。

在實(shí)際編程過程中,如果想避免發(fā)生這種情況,可以借助 @unique 裝飾器,這樣當(dāng)枚舉類中出現(xiàn)相同值的成員時(shí),程序會(huì)報(bào) ValueError 錯(cuò)誤。

例如:

#引入 unique
from enum import Enum,unique
#添加 unique 裝飾器
@unique
class Color(Enum):
# 為序列值指定value值
red = 1
green = 1
blue = 3
print(Color['green'])

運(yùn)行程序會(huì)報(bào)錯(cuò):

Traceback (most recent call last):
File "D:\python3.6\demo.py", line 3, in <module>
class Color(Enum):
File "D:\python3.6\lib\enum.py", line 834, in unique
(enumeration, alias_details))
ValueError: duplicate values found in <enum 'Color'>: green -> red

除了通過繼承 Enum 類的方法創(chuàng)建枚舉類,還可以使用 Enum() 函數(shù)創(chuàng)建枚舉類。

例如:

from enum import Enum
#創(chuàng)建一個(gè)枚舉類
Color = Enum("Color",('red','green','blue'))
#調(diào)用枚舉成員的 3 種方式
print(Color.red)
print(Color['red'])
print(Color(1))
#調(diào)取枚舉成員中的 value 和 name
print(Color.red.value)
print(Color.red.name)
#遍歷枚舉類中所有成員的 2 種方式
for color in Color:
print(color)

Enum() 函數(shù)可接受 2 個(gè)參數(shù),第一個(gè)用于指定枚舉類的類名,第二個(gè)參數(shù)用于指定枚舉類中的多個(gè)成員。

如上所示,僅通過一行代碼,即創(chuàng)建了一個(gè)和前面的 Color 類相同的枚舉類。

運(yùn)行程序,其輸出結(jié)果為:

Color.red
Color.red
Color.red
1
red
Color.red
Color.green
Color.blue

到此這篇關(guān)于Python枚舉類定義和使用方法的文章就介紹到這了,更多相關(guān)Python 枚舉 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python3 導(dǎo)入上級(jí)目錄中的模塊實(shí)例

    Python3 導(dǎo)入上級(jí)目錄中的模塊實(shí)例

    今天小編就為大家分享一篇Python3 導(dǎo)入上級(jí)目錄中的模塊實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python基礎(chǔ)之面對(duì)對(duì)象基礎(chǔ)類和對(duì)象的概念

    python基礎(chǔ)之面對(duì)對(duì)象基礎(chǔ)類和對(duì)象的概念

    這篇文章主要介紹了python面對(duì)對(duì)象基礎(chǔ)類和對(duì)象的概念,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python字符串駐留機(jī)制的使用范圍知識(shí)點(diǎn)詳解

    python字符串駐留機(jī)制的使用范圍知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python字符串駐留機(jī)制的使用范圍相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-09-09
  • python提示No module named images的解決方法

    python提示No module named images的解決方法

    這篇文章主要介紹了python提示No module named images的解決方法,是Python程序設(shè)計(jì)中經(jīng)常遇到的問題,本文給出了具有針對(duì)性的解決方法,需要的朋友可以參考下
    2014-09-09
  • Python3的介紹、安裝和命令行的認(rèn)識(shí)(推薦)

    Python3的介紹、安裝和命令行的認(rèn)識(shí)(推薦)

    Python是著名的“龜叔”Guido van Rossum在1989年圣誕節(jié)期間,為了打發(fā)無聊的圣誕節(jié)而編寫的一個(gè)編程語言。這篇文章主要介紹了Python3的介紹、安裝和命令行的認(rèn)識(shí),需要的朋友可以參考下
    2018-10-10
  • python?中的requirements.txt?文件的使用詳情

    python?中的requirements.txt?文件的使用詳情

    這篇文章主要介紹了python?中的requirements.txt文件的使用詳情,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • pygame游戲之旅 如何制作游戲障礙

    pygame游戲之旅 如何制作游戲障礙

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅的第6篇,教大家如何制作游戲障礙,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python中re模塊下的函數(shù)詳解

    Python中re模塊下的函數(shù)詳解

    這篇文章主要介紹了Python中re模塊下的函數(shù)詳解,re.match() 函數(shù)是從頭開始匹配一個(gè)符合規(guī)則的字符串,從起始位置開始匹配,匹配成功返回一個(gè)對(duì)象,未匹配成功返回None,需要的朋友可以參考下
    2023-08-08
  • python 代碼運(yùn)行時(shí)間獲取方式詳解

    python 代碼運(yùn)行時(shí)間獲取方式詳解

    這篇文章主要介紹了python 代碼運(yùn)行時(shí)間獲取方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)實(shí)例代碼

    python學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)實(shí)例代碼

    數(shù)據(jù)結(jié)構(gòu)就是用來將數(shù)據(jù)組織在一起的結(jié)構(gòu)。換句話說,數(shù)據(jù)結(jié)構(gòu)是用來存儲(chǔ)一系列關(guān)聯(lián)數(shù)據(jù)的東西。在Python中有四種內(nèi)建的數(shù)據(jù)結(jié)構(gòu),分別是List、Tuple、Dictionary以及Set。本文將通過實(shí)例來介紹這些數(shù)據(jù)結(jié)構(gòu)的用法。
    2015-05-05

最新評(píng)論

集安市| 大埔区| 洮南市| 南康市| 赤壁市| 石楼县| 舒城县| 玉环县| 柳江县| 明星| 通州市| 廉江市| 甘孜| 文登市| 静安区| 新乡县| 文山县| 阳高县| 江达县| 鄂州市| 天等县| 普安县| 恩施市| 永年县| 延边| 手游| 钟祥市| 新民市| 元谋县| 张家界市| 静宁县| 五河县| 成安县| 怀集县| 都兰县| 辰溪县| 河南省| 科技| 谢通门县| 太仆寺旗| 偃师市|