python枚举是什么意思,什么是枚举python
枚舉類型可以看作是一種標簽或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、狀態(tài)等。Python 的原生類型(Built-in types)里并沒有專門的枚舉類型,但是我們可以通過很多方法來實現(xiàn)它,例如字典、類等:WEEKDAY = {
'MON': 1,
'TUS': 2,
'WEN': 3,
'THU': 4,
'FRI': 5
}
class Color:
RED = 0
GREEN = 1
BLUE = 2
上面兩種方法可以看做是簡單的枚舉類型的實現(xiàn),如果只在局部范圍內(nèi)用到了這樣的枚舉變量是沒有問題的,但問題在于它們都是可變的(mutable),也就是說可以在其它地方被修改從而影響其正常使用:WEEKDAY['MON'] = WEEKDAY['FRI']
print(WEEKDAY)
{'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4}
通過類定義的枚舉甚至可以實例化,變得不倫不類:
c = Color()
print(c.RED)
Color.RED = 2
print(c.RED)
0
2
當然也可以使用不可變類型(immutable),例如元組,但是這樣就失去了枚舉類型的本意,將標簽退化為無意義的變量:COLOR = ('R', 'G', 'B')
print(COLOR[0], COLOR[1], COLOR[2])
R G B
為了提供更好的解決方案,Python 通過 PEP 435 在 3.4 版本中添加了 enum 標準庫,3.4 之前的版本也可以通過 pip install enum 下載兼容支持的庫。enum 提供了 Enum/IntEnum/unique 三個工具,用法也非常簡單,可以通過繼承 Enum/IntEnum 定義枚舉類型,其中 IntEnum 限定枚舉成員必須為(或可以轉(zhuǎn)化為)整數(shù)類型,而 unique 方法可以作為修飾器限定枚舉成員的值不可重復:from enum import Enum, IntEnum, unique
try:
@unique
class WEEKDAY(Enum):
MON = 1
TUS = 2
WEN = 3
THU = 4
FRI = 1
except ValueError as e:
print(e)
duplicate values found in : FRI -> MON
try:
class Color(IntEnum):
RED = 0
GREEN = 1
BLUE = 'b'
except ValueError as e:
print(e)
invalid literal for int() with base 10: 'b'
總結(jié)
以上是生活随笔為你收集整理的python枚举是什么意思,什么是枚举python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux java socket编程_
- 下一篇: mysql异常修复_MySQL错误修复: