网上的装饰器教程都是关于如何使用函数修饰普通函数的,本文章介绍如何使用类中的函数修饰类中函数。
直接看代码:
class a:
def __init__ (self):
self.a = 0
def decorate (func):
def warpper (self,*args,**kwargs):
print (self)
print ('decorate')
r = func (self,*args,**kwargs)
self.__init__ ()
print ('decorate end')
return r
return warpper
@decorate
def plus (self,num):
self.a += num
print (self.a)
与普通类中函数不同的是,装饰器函数的第一个参数不是self,而是被修饰的function
class a:
def __init__ (self):
self.a = 0
def decorate (func):
print (func)
@decorate
def test (self):
pass
--> <function test at 0xxxxxxxxxxx>
那么我们如何获取self呢?我们将其填写在warpper中
class a:
def __init__ (self):
self.a = 0
def decorate (func):
def warpper (self,*args,**kwargs):
do_something....
return warpper
@decorate
def plus (self,num):
self.a += num
print (self.a)