from enum import enum
# month型別的列舉類
month = enum('month', ('jan', 'feb', 'mar', 'apr'))
for name, member in month._member_map_.items():
print(name, '=>', member, ',', member.value)
# for迴圈結果
jan => month.jan , 1
feb => month.feb , 2
mar => month.mar , 3
apr => month.apr , 4
# 更精確地控制列舉型別,從enum派生出自定義類
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(day1.value) # 1
print(weekday(1)) # weekday.mon
for name,member in weekday.__members__.items():
print(name,'=>',member)
# for迴圈結果
sun => weekday.sun
mon => weekday.mon
tue => weekday.tue
wed => weekday.wed
thu => weekday.thu
fri => weekday.fri
sat => weekday.sat
type() 函式既可以返回乙個物件的型別,又可以建立出新的型別。
示例:
# 先定義函式
deffn
(self,name='world'):
print('hello, %s' %name)
# 建立hello類
hello=type('hello',(object,),dict(hello=fn))
h=hello()
h.hello() # hello, world
建立乙個class物件,type() 函式要依次傳入3個引數:
class的名稱
繼承的父類集合,使用tuple寫法
class的方法名與函式繫結
注意:正常情況下,使用class … 來定義類,type()函式允許動態建立類。
2.1 metaclass
基本用不到,先省略不看
python 物件導向高階程式設計
python 裝飾器 property使用 classscreen property defwidth self returnself.width pass width.setter defwidth self,value self.width value property defheight se...
python物件導向高階程式設計
1.繫結方法 給所有例項都繫結方法,可以給class繫結方法 def set score self,score self.score score student.set score set score 給class繫結方法後,所有例項均可呼叫。但是,如果我們想要限制例項的屬性怎麼辦?比如,只允許對s...
物件導向高階程式設計
相同class的各物件互為友元 class complex int func const complex param private double re,im string inline string string const char cstr 0 else inline string strin...