#!-*-coding:utf-8-*-
import time
class MyDecorator(object):
def __init__(self,f):
self.f=f
print("MyDecorator __init__")
#f()
def __call__(self):
print("MyDecorator __call__ before")
self.f()
print("MyDecorator __call__ after ")
@MyDecorator
def aFunc():
print("aFunc...")
class MyDecoratorWithArguments(object):
def __init__(self,arg1,arg2,arg3):
print('MyDecoratorWithArguments __init__')
self.arg1=arg1
self.arg2=arg2
self.arg3=arg3
def __call__(self,f):
print("Inside __call__ of MyDecoratorWithArguments")
def wrapper(*args):
print("MyDecoratorWithArguments wrapper in")
f(*args)
print("MyDecoratorWithArguments wrapper out")
return wrapper
@MyDecoratorWithArguments('hello','world',42)
def bFunc(a1,a2,a3,a4):
print("bFunc ",a1,a2,a3,a4)
def timecount(f):
print('Inside timecount')
def wrapper():
start=time.clock()
print('timecount wrapper before ')
f()
print('timecount wrapper after')
end=time.clock()
print('Used : '+str(end-start))
return wrapper
@timecount
def cFunc():
print('cFunc ...')
def timecount_withargs(f):
print('Inside timecount_withargs')
def wrapper(*args):
print('timecount_withargs wrapper before')
f(*args)
print('timecount_withargs wrapper after')
return wrapper
@timecount_withargs
def dFunc(arg1,arg2,arg3,arg4):
print('dFunc ',arg1,arg2,arg3,arg4)
if __name__=='__main__':
print('*'*30)
aFunc()
print('*'*30)
bFunc('say','hello','test','jack')
print('-'*30)
cFunc()
print('-' * 30)
dFunc('hello','world',['a','b',3,4],43)
print('-' * 30)