参考文章:https://foofish.net/python-decorator.html
函数装饰器
import logging
def use_logging(func):
logging.info("%s is running" % func.__name__)
func()
def use_logging1(func):
def wrapper(*args): # 带参数的
logging.info("%s is running" % func.__name__)
func(*args)
return wrapper
@use_logging1
def foo(name, attr="big fool"):
print("%s is a %s" % (name, attr))
@use_logging1
def poo(name):
print("%s is a pool" % name)
if __name__ == "__main__":
foo("Li")
poo("Dongting")
类装饰器
class Foo(object):
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print("class decorator running")
self.func()
print("class decorator ending")
@Foo
def bar():
print("i am a bar")