小白學python之使用列舉類_學習筆記
本文以廖雪峰的官方網站為參考來學習python的。其學習連結為廖雪峰小白學python教程。
本文是學習到python的多重繼承。參考連結廖雪峰python使用列舉類。
本學習筆記僅供參考。
>>> from enum import Enum >>> Month = Enum('Month',('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) >>> for name,member in Month.__members__.items(): print(name,'=>',member,',',member.value)
執行結果:
Jan => Month.Jan , 1
Feb => Month.Feb , 2
Mar => Month.Mar , 3
Apr => Month.Apr , 4
May => Month.May , 5
Jun => Month.Jun , 6
Jul => Month.Jul , 7
Aug => Month.Aug , 8
Sep => Month.Sep , 9
Oct => Month.Oct , 10
Nov => Month.Nov , 11
Dec => Month.Dec , 12
from enum import Enum, unique >>> @unique class Weekday(Enum): Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 >>> >>> day1 = Weekday.Mon >>> print(day1) Weekday.Mon >>> print(Weekday.Tue) Weekday.Tue >>> print(Weekday['Tue']) Weekday.Tue >>> print(Weekday.Tue.value) 2 >>> print(day1 == Weekday.Mon) True >>> print(day1 == Weekday.Tue) False >>> print(Weekday(1)) Weekday.Mon >>> print(day1 == Weekday(1)) True
如果輸入
>>> Weekday(7)
則會報錯:
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
Weekday(7)
File "**********", line *****, in __call__
return cls.__new__(cls, value)
File "**********", line ******, in __new__
return cls._missing_(value)
File "***********", line ***, in _missing_
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 7 is not a valid Weekday
>>> for name, member in Weekday.__members__.items():
print(name,'=>',member)
執行結果為:
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fri => Weekday.Fri
Sat => Weekday.Sat
練習:
>>> # -*- coding: utf-8 -*-
from enum import Enum, unique
>>>
class Gender(Enum):
Male = 0
Female = 1
>>>
class Student(object):
def __init__(self,name,gender):
self.name = name
self.gender = gender
>>> bart = Student('Bart', Gender.Male)
>>> if bart.gender == Gender.Male:
print('測試通過!')
else:
print('測試失敗!')
執行結果:
測試通過!