目錄
1. 兩種方式定義列舉類
1)直接使用enum()函式列出多個列舉值來建立列舉類;
2)通過繼承enum類定義列舉類
2. 列舉類定義建構函式
什麼是列舉類?
物件有限且固定的類;(比如季節類,只包括春夏秋冬四個物件)
from enum import enum
# 定義season列舉類
season = enum('season', ('spring', 'summer', 'fall', 'winter'))
# 第乙個引數值為列舉類的類名,第二個引數值為乙個元組,用於列出所有的列舉物件
定義的四個列舉物件都有name、value兩個屬性,name為該列舉物件的物件名,value代表該物件在列舉值中的序號(從1開始):
# 測試列舉物件兩個屬性的用法
print(season.spring) # season.spring
print(season.summer.name) # summer
print(season.fall.value) # 3
程式可以通過列舉物件名或者列舉物件序號值訪問列舉物件:
print(season['spring']) # season.spring
print(season(2)) # season.summer 注意是括號
python還為列舉提供了乙個__members__屬性,該屬性返回乙個dict字典,字典包含所有的列舉物件:
print(season.__members__)
# ordereddict([('spring', ), ('summer', ), ('fall', ), ('winter', )])
print(season.__members__.items())
# odict_items([('spring', ), ('summer', ), ('fall', ), ('winter', )])
為物件新建例項變數或者方法,列舉物件用「 類名.物件名
」表示
:season.spring.day = 31+28+31
print(season.spring.day) # 90
def inf():
print("春天")
season.spring.des = inf
season.spring.des() # 春天
from enum import enum
class season(enum):
# 建立列舉物件並指定value值
spring = "1"
summer = "2"
fall = "3"
winter = "4"
def inf(self):
if self.value == '1':
print("春天")
elif self.value == '2':
print("夏天")
elif self.value == '3':
print("秋天")
else:
print("冬天")
print(season.spring) # season.spring
print(season.spring.name) # spring
print(season.spring.value) # 1 這個1是字串型別
print(season['spring']) # season.spring
season.spring.inf() # season.spring
from enum import enum
class season(enum):
# 建立列舉物件並指定value值,超過乙個值python會自動將其封裝成乙個元組傳給value
spring = "1", "春天"
summer = "2", "夏天"
fall = "3", "秋天"
winter = "4", "冬天"
# 因為列舉類物件已經確定,所以建構函式不會用於建立新物件,其主要作用是對映物件的value值,
# value值有幾個元素,建構函式就有幾個引數(不包括引數self)
def __init__(self, num, ch_name):
self.num = num
self.ch_name = ch_name
# value值以元組形式輸出
print(season.spring.value) # ('1', '春天')
# num、ch_name分別對映value元組的每個元素
print(season.spring.num)
print(season.spring.ch_name)
python學習筆記 30 列舉類
當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...
23 列舉類和元類
列舉類from enum import enum month enum month jan feb mar apr may jun jul aug sep oct nov dec 可以直接使用month.jan來引用乙個常量,或者列舉它的所有成員 for name,member in month.m...
Kotlin筆記 八 八 列舉類
kotlin使用enum class關鍵字定義列舉類,可以實現乙個或多個介面 列舉類的所有例項必須在 第一行顯式列出 例項間用 隔開,以 結束 列舉類可以有自己的 屬性 方法 構造器 構造器只能使用private修飾符,省略則預設使用private 列舉類應該被設為不可變類,屬性不應該允許改變,推薦...