Python有参/无参修饰器函数和修饰器类的用法
Posted 算法与编程之美
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python有参/无参修饰器函数和修饰器类的用法相关的知识,希望对你有一定的参考价值。
本文主要介绍Python编程语言中常见的修饰器函数及修饰器类的用法。
问题
方法
无参修饰器函数
def aop(foo):
def wrapper():
print('before')
foo()
print('after')
return wrapper
@aop # 修饰器函数
def say_hello():
print('hello')
if __name__ == '__main__':
say_hello()
有参修饰器函数
from functools import wraps
def aop(foo):
@wraps(foo) #! 提供参数
def wrapper(*args, **kwargs): #!
print('before')
foo(*args, **kwargs) #! 容易出错
print('after')
return wrapper
@aop # 修饰器函数
def say_hello(name):
print('hello', name)
if __name__ == '__main__':
say_hello(name = 'chen')
修饰器类
from functools import wraps
class AOP:
def __call__(self, foo):
@wraps(foo)
def wrapper(*args, **kwargs):
print('before')
foo(*args, **kwargs)
print('after')
return wrapper #! 容易出错
@AOP() #! 注意是实例化对象
def say_hello(name):
print('hello', name)
if __name__ == '__main__':
'''
Exception has occurred: TypeError
'NoneType' object is not callable
'''
say_hello(name='chen')
结语
以上是关于Python有参/无参修饰器函数和修饰器类的用法的主要内容,如果未能解决你的问题,请参考以下文章