def decorate_function(original_function):
def wrapper_function(*args,**kwargs):
print('original_function name is {}'.format(original_function.__name__))
return original_function(*args,**kwargs)
return wrapper_function
class decorate_class(object):
def __init__(self,original_function):
self.original_function = original_function
def __call__(self, *args, **kwargs):
print('original_function name is {}'.format(self.original_function.__name__))
return self.original_function(*args, **kwargs)
# @decorate_function
@decorate_class
def display():
print('original_function ran')
# @decorate_function
@decorate_class
def display_info(name,age):
print('display的參數爲({},{})'.format(name,age))
# 未用註解時
# function1 = decorate_function(original_function)
# function1()
# display_info('lisi',25)
display()
通過裝飾模式來包裹被裝飾的函數,在這個函數開始或結束,運行裝飾函數。可以起到增強函數或者說方法的作用,java的動態代理異曲同工。