32 高階特性之類裝飾器

2022-05-12 06:13:38 字數 823 閱讀 2052

class test():

def __call__(self):

print('call me!')

t = test()

t()

class test(object):

def __init__(self,func): #傳入待裝飾的函式func

print("the instance of test is initializing")

self.__func = func #把func給私有屬性,以保護func

def __call__(self):

print("func的前置修飾")

self.__func() #其實等價於func(),執行func()本身

print("func的後置修飾")

#手動模擬類裝飾器的工作過程:

def world():

print("-----world--------")

t = test(world)

t() #開始執行__call__(),即開始執行裝飾操作和func()本身了。

print('\n')

#使用語法糖

@test

def hello():

print("------hello-------")

hello()

待以後遇到實際問題再處理

python高階特性(裝飾器)

裝飾器本質上是乙個函式,該函式用來處理其他函式,它可以讓其他函式在不需要修改 的 前提下增加額外的功能,裝飾器的返回值也是乙個函式物件。它經常用於有切面需求的場景,比如 插入日誌 效能測試 事務處理 快取 許可權校驗等應用場景。首先我們先了解以下通用裝飾器的框架,幫助我們更好地理解裝飾器的用法 de...

裝飾器之類裝飾器

外部的方法至今都玩過了,現在來思索一下的方法這麼裝飾 類方法修飾器 類的方法唯一的特殊點在於,self內部是可以呼叫的,但是在外部卻是隱藏的,那這個怎麼搞 為求穩妥,先定參修飾乙個 def godme fun def godme self,message print before fun self,...

Python高階特性之裝飾器

裝飾器 定義乙個裝飾函式,函式必須返回乙個閉包 閉包就是執行時所需要的外部變數 函式物件,關於閉包的具體介紹,可參考函式,並且被裝飾的函式會被python自動傳遞給裝飾函式,作為裝飾函式的乙個引數。裝飾器的具體定義 1 把要裝飾的方法作為輸入引數 2 在函式體內可以進行任意的操作 可以想象其中會有很...