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 在函式體內可以進行任意的操作 可以想象其中會有很...