日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

java 枚举类型enum用法_别再说Python没有枚举类型了,好好看看

發(fā)布時(shí)間:2023/12/19 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 枚举类型enum用法_别再说Python没有枚举类型了,好好看看 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

枚舉

枚舉類型可以看作是一種標(biāo)簽或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、狀態(tài)等。

Python 的原生類型(Built-in types)里并沒有專門的枚舉類型,但是我們可以通過很多方法來實(shí)現(xiàn)它,例如字典、類等:

python編程

上面兩種方法可以看做是簡單的枚舉類型的實(shí)現(xiàn)。

如果只在局部范圍內(nèi)用到了這樣的枚舉變量是沒有問題的。

但問題在于它們都是可變的(mutable),也就是說可以在其它地方被修改從而影響其正常使用:

python編程

通過類定義的枚舉甚至可以實(shí)例化,變得不倫不類:

python編程

當(dāng)然也可以使用不可變類型(immutable),例如元組,但是這樣就失去了枚舉類型的本意,將標(biāo)簽退化為無意義的變量:

python編程

為了提供更好的解決方案,Python 通過 PEP 435 在 3.4 版本中添加了 enum 標(biāo)準(zhǔn)庫,3.4 之前的版本也可以通過 pip install enum 下載兼容支持的庫。

enum 提供了 Enum/IntEnum/unique 三個(gè)工具,用法也非常簡單,可以通過繼承 Enum/IntEnum 定義枚舉類型,其中 IntEnum 限定枚舉成員必須為(或可以轉(zhuǎn)化為)整數(shù)類型,而 unique 方法可以作為修飾器限定枚舉成員的值不可重復(fù):

python編程

python編程

更有趣的是 Enum 的成員均為單例(Singleton),并且不可實(shí)例化,不可更改:

python編程

雖然不可實(shí)例化,但可以將枚舉成員賦值給變量:

python編程

也可以進(jìn)行比較判斷:

python編程

最后一點(diǎn),由于枚舉成員本身也是枚舉類型,因此也可以通過枚舉成員找到其它成員:

python編程

但是要謹(jǐn)慎使用這一特性,因?yàn)榭赡芘c成員原有的命名空間中的名稱相沖突:

python編程

總結(jié):

enum 模塊的用法很簡單,功能也很明確,但是其實(shí)現(xiàn)方式卻非常值得學(xué)習(xí)。如果你想更深入了解更多 Python 中關(guān)于 Class 和 Metaclass 的黑魔法,又不知道如何入手,那么不妨閱讀一下 enum 的源碼。

后臺(tái)私信我:騰訊架構(gòu)資源,獲取騰訊架構(gòu)師整理的大數(shù)據(jù)學(xué)習(xí)資源

總結(jié)

以上是生活随笔為你收集整理的java 枚举类型enum用法_别再说Python没有枚举类型了,好好看看的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。