開發中我們經常定義常量,
其實有更好的方法:為這樣的枚舉類型定義一個class類型,然后,每個常量都是class的一個唯一實例。
Python中提供了Enum
類來實現這個功能:
from enum import Enum Numbers = Enum('Name', ('喬峰', '鳩摩智', '段譽', '阿紫', '虛竹','慕容復')) for name, member in Numbers.__members__.items(): print(name, '=>', member, ',', member.value) print(Numbers.慕容復.value) # 值默認從1 開始 print(Numbers['虛竹']) # 用數組下標的形式訪問屬性 print(Numbers(2)) # 直接使用索引形式訪問
輸出:
喬峰 => Name.喬峰 , 1 鳩摩智 => Name.鳩摩智 , 2 段譽 => Name.段譽 , 3 阿紫 => Name.阿紫 , 4 虛竹 => Name.虛竹 , 5 慕容復 => Name.慕容復 , 6 6 Name.虛竹 Name.鳩摩智
上面我們就獲得了Numbers類型的枚舉類,可以直接使用: Numbers.喬峰
來引用一個常量,或者枚舉它的所有成員。value
屬性則是自動賦給成員的int
常量,默認從1
開始計數。
可見,我們既可以用成員名稱引用枚舉常量,又可以直接根據value的值獲得枚舉常量。我們再看一個例子:
from enum import Enum class Gender(Enum): Male = "男" Female = "女" class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender p = Person('喬峰', Gender.Male) if p.gender == Gender.Male: # 輸出 純爺們 print('存爺們!') else: print('俺娘說了!')