在Python中有兩種方式申報的裝飾:類裝飾VS功能裝飾
基於類
class mydecorator(object):
def __init__(self, f):
self.f = f
def __call__(self, *k, **kw):
# before f actions
self.f(*k, **kw)
# after f actions
功能基於
def mydecorator(f):
def decorator(*k, **kw):
# before f actions
f(*k, **kw)
# after f actions
return decorator
是否有這些有什麼區別聲明? 在哪些情況下應該使用它們中的每一種?
使用類,您可以使用描述符協議! – phant0m
@ phant0m:在缺點方面,你有*要使用描述符協議的類(否則你的裝飾器將不能完全在方法上工作)。 –
@Rosh:嗯是的,你在這裏有一個非常強大的點:) – phant0m