一:開放封閉原則,對擴充套件是開放的,對修改是封閉的
二:裝飾器,裝飾器本質可以是任意可呼叫的物件,被裝飾的物件也可以是任意可呼叫物件
裝飾器的功能是:
在不修改被裝飾物件源**以及呼叫方式的前提下為其新增新功能
原則:1.不修改源**
2.不修改呼叫方法
目標:新增新功能
裝飾器的語法:在被裝飾物件的正上方的單獨一行。@裝飾器名字
import time
import random
#裝飾器
def timmer(func):#func=index
#func=index
start_time=time.time()
func()#index
stop_time=time.time()
print('run time is %s' %(stop_time-start_time))
#被裝飾函式
@timmer #index=timer(index)
def index():
time.sleep(random.randrange(1,5))
print('welecome to index page')
@timmer
def home():
time.sleep(random.randrange(1, 3))
print('welecome to home page')
index()
home()
可以加多個裝飾器,計算順序是自下而上,自上而下執行
裝飾器修訂版本
import time
import random
#裝飾器
def timmer(func):
start_time=time.time()
res=func(*args,**kwargs)
stop_time=time.time()
print('run time is %s' %(stop_time-start_time))
return res
#被裝飾函式
@timmer
def index():
time.sleep(random.randrange(1,5))
print('welecome to index page')
res1=index()
print(res1)
python裝飾器和python物件導向練習題
編寫裝飾器,為函式加上統計時間的功能 2.編寫裝飾器,為函式加上認證的功能 3.定義乙個名為vehicles 交通工具 的基類 該類中應包含str型別的成員屬性brand 商標 和 color 顏色 還應包含物件方法run 行駛在控制台顯示 我已經開動了 和show info 顯示資訊 在控制台顯示...
Python物件導向 類 例項 裝飾器
物件導向 類 例項 裝飾器 繼承 class recatangle 新建乙個長方形的類 def init self,length,width self.length length self.width width 只能由例項呼叫,稱為例項方法 def permeter self return sel...
python裝飾器 Python 裝飾器
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...