不带参数:
def deco(func):
def wrapper(*args,**kwargs):
print("before wrapper")
func(*args,**kwargs)
print("after wrapper")
return wrapper
@deco
def test():
print("in test")
test()
带参数:
def deco(*args,**kwargs):
def wrapper(func):
def inner(*args,**kwargs):
print(args,kwargs)
print("before wrapper")
func(*args,**kwargs)
print("after wrapper")
return inner
return wrapper
@deco()
def test():
print("in test")
test()
类中不带参数:
from functools import wraps
def wrapper(func):
@wraps(func)
def inner(self,*args,**kwargs):
print("before wrapper")
func(self,*args,**kwargs)
print("after wrapper")
return inner
class Test:
@wrapper
def test(self,*args,**kwargs):
print("in class test",args,kwargs)
Test().test()
类中带参数:
from functools import wraps
def deco(*wargs,**wkwargs):
def wrapper(func):
@wraps(func)
def inner(self,*args,**kwargs):
print("wrapper args:",wargs,wkwargs)
print("before wrapper")
func(self,*args,**kwargs)
print("after wrapper")
return inner
return wrapper
class Test:
@deco()
def test(self,*args,**kwargs):
print("in class test",args,kwargs)
Test().test()