欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你了解Python中的枚舉(enum)

 更新時(shí)間:2023年04月10日 09:57:16   作者:top啦它  
這篇文章一文帶你了解Python中的枚舉(enum),在Python中,枚舉和我們?cè)趯?duì)象中定義的類變量時(shí)一樣的,每一個(gè)類變量就是一個(gè)枚舉項(xiàng),需要的朋友可以參考下

使用普通類直接實(shí)現(xiàn)枚舉

在Python中,枚舉和我們?cè)趯?duì)象中定義的類變量時(shí)一樣的,每一個(gè)類變量就是一個(gè)枚舉項(xiàng),訪問枚舉項(xiàng)的方式為:類名加上類變量,像下面這樣:

class color():
    YELLOW  = 1
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
# 訪問枚舉項(xiàng)
print(color.YELLOW) # 1

雖然這樣是可以解決問題的,但是并不嚴(yán)謹(jǐn),也不怎么安全,比如:

1、枚舉類中,不應(yīng)該存在key相同的枚舉項(xiàng)(類變量)

2、不允許在類外直接修改枚舉項(xiàng)的值

class color():
    YELLOW  = 1
    YELLOW  = 3   # 注意這里又將YELLOW賦值為3,會(huì)覆蓋前面的1
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
# 訪問枚舉項(xiàng)
print(color.YELLOW) # 3
 
# 但是可以在外部修改定義的枚舉項(xiàng)的值,這是不應(yīng)該發(fā)生的
color.YELLOW = 99
print(color.YELLOW) # 99

解決方案:使用enum模塊

  enum模塊是系統(tǒng)內(nèi)置模塊,可以直接使用import導(dǎo)入,但是在導(dǎo)入的時(shí)候,不建議使用import enum將enum模塊中的所有數(shù)據(jù)都導(dǎo)入,一般使用的最多的就是enum模塊中的Enum、IntEnum、unique這幾項(xiàng)

# 導(dǎo)入枚舉類
from enum import Enum
 
# 繼承枚舉類
class color(Enum):
    YELLOW  = 1
    BEOWN   = 1 
    # 注意BROWN的值和YELLOW的值相同,這是允許的,此時(shí)的BROWN相當(dāng)于YELLOW的別名
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
class color2(Enum):
    YELLOW  = 1
    RED     = 2
    GREEN   = 3
    PINK    = 4

使用自己定義的枚舉類:

print(color.YELLOW) # color.YELLOW
print(type(color.YELLOW)) # <enum 'color'>
 
print(color.YELLOW.value)  # 1
print(type(color.YELLOW.value)) # <class 'int'>
 
print(color.YELLOW == 1)    # False
print(color.YELLOW.value == 1)  # True
print(color.YELLOW == color.YELLOW)  # True
print(color.YELLOW == color2.YELLOW)  # False
print(color.YELLOW is color2.YELLOW)  # False
print(color.YELLOW is color.YELLOW)  # True
 
print(color(1))         # color.YELLOW
print(type(color(1)))   # <enum 'color'>
  注意事項(xiàng)如下:

1、枚舉類不能用來實(shí)例化對(duì)象

2、訪問枚舉類中的某一項(xiàng),直接使用類名訪問加上要訪問的項(xiàng)即可,比如 color.YELLOW

3、枚舉類里面定義的Key = Value,在類外部不能修改Value值,也就是說下面這個(gè)做法是錯(cuò)誤的

color.YELLOW = 2  # Wrong, can't reassign member

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

5、導(dǎo)入Enum之后,一個(gè)枚舉類中的Key和Value,Key不能相同,Value可以相,但是Value相同的各項(xiàng)Key都會(huì)當(dāng)做別名

6、如果要枚舉類中的Value只能是整型數(shù)字,那么,可以導(dǎo)入IntEnum,然后繼承IntEnum即可,注意,此時(shí),如果value為字符串的數(shù)字,也不會(huì)報(bào)錯(cuò):

from enum import IntEnum

7、如果要枚舉類中的key也不能相同,那么在導(dǎo)入Enum的同時(shí),需要導(dǎo)入unique函數(shù)

from enum import Enum, unique

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

相關(guān)文章

  • Python實(shí)現(xiàn)特定場(chǎng)景去除高光算法詳解

    Python實(shí)現(xiàn)特定場(chǎng)景去除高光算法詳解

    這篇文章主要介紹了如何利用Python+OpenCV實(shí)現(xiàn)特定場(chǎng)景去除高光算法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2021-12-12
  • Python基礎(chǔ)之文件操作及光標(biāo)移動(dòng)詳解

    Python基礎(chǔ)之文件操作及光標(biāo)移動(dòng)詳解

    這篇文章主要為大家介紹了Python基礎(chǔ)之文件操作及光標(biāo)移動(dòng)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Pytorch中.detach()與.data的用法小結(jié)

    Pytorch中.detach()與.data的用法小結(jié)

    這篇文章主要介紹了Pytorch中.detach()與.data的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • python程序超時(shí)處理方式

    python程序超時(shí)處理方式

    這篇文章主要介紹了python程序超時(shí)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python及PyCharm下載與安裝教程

    Python及PyCharm下載與安裝教程

    這篇文章主要為大家詳細(xì)介紹了Python及PyCharm下載與安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 關(guān)于python pygame游戲進(jìn)行聲音添加的技巧

    關(guān)于python pygame游戲進(jìn)行聲音添加的技巧

    這篇文章主要給大家分享的是pygame游戲進(jìn)行聲音添加的方法,這文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
    2021-10-10
  • Python Grid使用和布局詳解

    Python Grid使用和布局詳解

    這篇文章主要為大家詳細(xì)介紹了Python Grid使用和布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳解python3中用HTMLTestRunner.py報(bào)ImportError: No module named ''StringIO''如何解決

    詳解python3中用HTMLTestRunner.py報(bào)ImportError: No module named ''

    這篇文章主要介紹了詳解python3中用HTMLTestRunner.py報(bào)ImportError: No module named 'StringIO'如何解決,感興趣的可以了解一下
    2019-08-08
  • QML實(shí)現(xiàn)鐘表效果

    QML實(shí)現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了QML實(shí)現(xiàn)鐘表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 詳解requirements.txt的生成和安裝

    詳解requirements.txt的生成和安裝

    本文主要介紹了詳解requirements.txt的生成和安裝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論