小白學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('測試失敗!')

運行結果:

測試通過!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章