Python枚举类型的使用
生活随笔
收集整理的這篇文章主要介紹了
Python枚举类型的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
枚舉類型是在Python3.4新增到Python的標準庫。
創建枚舉
Python提供了兩種方法來創建枚舉:
- 基于class語法創建枚舉
- 基于Function API創建枚舉
創建枚舉首先要導入Enum類
>>> from enum import Enum基于class語法創建枚舉
示例
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> from enum import Enum >>> class Color(Enum): ... red = 1 ... green = 2 ... blue = 3示例定義以下內容:
- 定義了Color的枚舉類型。
- 定義了枚舉類型Color的枚舉成員:Color.red,Color.green,Color.blue。
- 給每一個枚舉成員賦值,如Color.red的值為1。需要注意的是枚舉成員的值可以指定為其他類型,沒有強制要求是整型。
枚舉成員包含了兩個屬性:name和value
>>>Color.red.name red >>>Color.red.value 1定義字符串類型的值
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> from enum import Enum >>> class Color(Enum): ... red = 'r' ... green = 'g' ... blue = 'b'基于Function API創建枚舉
上面基于class創建枚舉的示例用Function API可以改寫為
>>>from enum import Enum >>>Color = Enum('Color','red green blue') >>>list(Color) [<Color.red:1>,<Color.green:2>,<Color.blue:3>]Enum函數第一個參數為枚舉名。第二個參數為枚舉成員列表。
第二個參數表示的枚舉成員列表有三種方式:
- 使用字符串表示,各成員名使用空格隔開。成員的值從1開始自動遞增。
- 使用元組表示,成員的值從1開始自動遞增。
- 使用字典表示,字典可以指定枚舉成員的值,其中字典的鍵位枚舉成員名,值為枚舉成員的值。
使用字典聲明示例
>>>from enum import Enum >>>Color = Enum('Color',{'red':1,'green':2,'blue':4})訪問枚舉成員
訪問枚舉成員有三種方式:
- 使用點號(".")引用
- 使用value獲取,值對應的枚舉成員
- 使用枚舉成員名
按值訪問
>>>Color(1) <Color.red:1>按枚舉名訪問
>>>Color['red'] <Color.red:1>遍歷枚舉
枚舉支持對它的成員進行遍歷
list遍歷
>>>list(Color) [<Color.red:1>,<Color.green:2>,<Color.blue:3>]for遍歷
>>>for color in Color: ... print(color)枚舉類型的比較
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> Color.red is Color.red True >>> Color.red is Color.blue False >>> Color.red is not Color.blue True注意枚舉成員并非整型,是不能做大小比較,如
>>> Color.red < Color.blue Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: unorderable types: Color() < Color()只能做相等性比較
>>> Color.blue == Color.red False >>> Color.blue != Color.red True >>> Color.blue == Color.blue True >>> Color.blue == 2 False定義枚舉的方法
由于枚舉類型也是一個class,所以也支持給枚舉類型定義方法。
示例:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' class Mood(Enum):funky = 1happy = 3def describe(self):# self為枚舉成員return self.name, self.valuedef __str__(self):return 'my custom str! {0}'.format(self.value)@classmethoddef favorite_mood(cls):# cls為枚舉類型return cls.happy使用:
>>> Mood.favorite_mood() <Mood.happy: 3> >>> Mood.happy.describe() ('happy', 3) >>> str(Mood.funky) 'my custom str! 1'定義枚舉的子類
定義枚舉的子類需要滿足:父枚舉沒有定義任何的枚舉成員,此時才允許有子類。
>>> class MoreColor(Color): ... pink = 17 ... TypeError: Cannot extend enumerations這是由于Mood已定義了枚舉成員,不允許擴展。
總結
以上是生活随笔為你收集整理的Python枚举类型的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 类属性和对象属性--定义和
- 下一篇: python 类继承与子类实例初始化