目的:
在类中定义一个装饰器,并将其作用于其他的函数或者方法上
解决方案:
首先我们要清楚装饰器将以什么方式来应用,具体来说就是指以实例方法还是以类方法来应用。
例子如下:
from functools import wraps
class A:
def decorate1(self,func):
@wraps(func)
def wrapper(*args,**kwargs):
print('Decorate 1')
return func(*args,**kwargs)
return wrapper
@classmethod#该方法为类方法,由类直接调用即可,无需对象
def decorate2(cls,func):
@wraps(func)
def wrapper(*args,**kwargs):
print('Decorate 2')
return func(*args,**kwargs)
return wrapper
a = A()
@a.decorate1
def spam():
print('Spam')
@A.decorate2
def grok():
pass
spam()
grok()
'''
结果为:
Decorate 1
Spam
Decorate 2
'''
假设如果想在其它类中调用该类的装饰器,则必须将类显式地给出。
class B(A):
@A.decorate2
def print_a(self):
pass
想熟悉python?或者了解更多python基础知识,请关注:
小白piao: