Enum學習


#
#Enum 練習:
from enum import Enum, unique


#1、函數式API調用
# 第一個參數是枚舉名稱
# 第二個參數是枚舉成員名稱的源
Month = Enum('Month',('Jan','Feb','Mar'))
for name,member in Month.__members__.items(): # list all enum members,including aliases,既然是map自然就會有items
    print(name,'=>',member,',',member.value)  #value屬性是自動賦給成員的int常量,默認從1開始記數


#2、自定義枚舉類
@unique
#裝飾器可以幫助我們檢查保證沒有重復值。
##如果錯誤,將返回:
#line 834, in unique
##    (enumeration, alias_details))
##ValueError: duplicate values found in <enum 'Weekday'>: Tom -> Sun
class Weekday(Enum):
    Sun = 0 # Sun的value被設定為0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6
    Tom=0


#test
a=Weekday
print(a.Sun)
print(a.Sun.value)

print(a['Tue'])
print(a['Tue'].value)

print(a(0))
print(a(0).value)

for key,value in a.__members__.items():
    print(key,'-',value)
##Sun - Weekday.Sun
##Mon - Weekday.Mon
##Tue - Weekday.Tue
##Wed - Weekday.Wed
##Thu - Weekday.Thu
##Fri - Weekday.Fri
##Sat - Weekday.Sat

print('-'*100)

#作業:
#把Student的gender屬性改造為枚舉類型,可以避免使用字符串:
class Gender(Enum):
    Male = 0
    Female = 1

class Student(object):
    def __init__(self, name, gender):
        self.name = name
        if isinstance(gender,Gender):
            self.gender = gender
        else:
            print('gender must be Gender type.')
            return 0



# 測試:
bart = Student('Bart', Gender.Male)
if bart.gender == Gender.Male:
    print('測試通過!')
else:
    print('測試失敗!')

 


免責聲明!

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



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