Python中使用枚舉類


開發中我們經常定義常量,

其實有更好的方法:為這樣的枚舉類型定義一個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('俺娘說了!')

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM