Python中的枚舉

來源:互聯網
上載者:User

標籤:結構   value   通過   情況   引入   控制   port   利用   不能   

在Python中想要實現枚舉功能的方式比較多,可以通過字典這一資料結構,利用鍵與值的對應關係,可以實現枚舉的功能。

my_Enum={‘red‘:1,‘yellow‘:2,‘blue‘:3}print(my_Enum[‘red‘])

也可以使用類來建立一個屬性名稱與屬性值之間的對應關係來實現枚舉的功能,然後用.操作符來讀取

class my_Enum{     red=1,    yellow=2,    blue=3       }my_Enum.red

但是用以上兩種方式出現的問題也是很明顯的:

1.枚舉值可以修改

2.用類定義的話,這些枚舉功能的類可以被執行個體化

3.枚舉值是否重複無法檢查

在Python3.4引入了enum模組,這個模組就是為瞭解決上面所說到的問題的,使用的時候首先引入模組:

import enum

enum裡面提供了Enum和IntEnum等類,可以用來繼承。

當然,這些類就被限制了,

1.不能被繼承

2.定義之後不能在類內修改

3.枚舉名稱不能重複。如果有值重複的情況,那麼後者的名稱將會是前者的別名,其實是一個對象。

要控制枚舉值不能重複,可以在枚舉類之前加上@unique

對枚舉類的操作:

from enum import IntEnumclass my_Enum(IntEnum):    red=1,    green=2,    blue=3,    what=3,    yellow=9#按名字取出枚舉的值print(my_Enum[‘red‘])print(my_Enum[‘what‘])#枚舉的值返回枚舉名字print(my_Enum(9))print(my_Enum[‘red‘].name)print(my_Enum[‘red‘].value)#可以用for in迭代for i in my_Enum:    print(i.name,‘->‘,i.value)

 運行結果:

my_Enum.redmy_Enum.bluemy_Enum.yellowred1red -> 1green -> 2blue -> 3yellow -> 9

 

Python中的枚舉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.