python裝飾物件 python裝飾器

2021-10-12 11:51:16 字數 1211 閱讀 3366

一:開放封閉原則,對擴充套件是開放的,對修改是封閉的

二:裝飾器,裝飾器本質可以是任意可呼叫的物件,被裝飾的物件也可以是任意可呼叫物件

裝飾器的功能是:

在不修改被裝飾物件源**以及呼叫方式的前提下為其新增新功能

原則: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裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...