我想制作一个装饰器,它将另一个装饰器函数作为参数。
装饰师会做额外的工作。
def raise_error(func):
def wrapper(*args, **kwargs):
print('hello from decorator')
return func(*args, **kwargs)
return wrapper
@raise_error
def hello():
return 'Hellom from function'
print(hello())
从技术上讲,我可以在raise_error
装饰器内写一个装饰器,它将是take,boost_error装饰器,并做一些额外的流程?
提前谢谢。
答案 0 :(得分:0)
你在谈论多个装饰者吗?
喜欢这个
def raise_error(func):
def wrapper(*args, **kwargs):
print('hello from decorator')
return func(*args, **kwargs)
return wrapper
def foo(func):
def wrapper(*args, **kwargs):
print('bar')
return func(*args, **kwargs)
return wrapper
@foo
@raise_error
def hello():
return 'Hello from function'
print(hello())
答案 1 :(得分:0)
将func作为装饰器的参数的另一种可能性。
def raise_error(func):
def wrapper(*args, **kwargs):
test_func = getattr(func, 'tester', None)
test_func()
print('Hello from decorator')
return func(*args, **kwargs)
return wrapper
def test():
print('Hello from test')
def hello():
print('Hello from function')
return 'Hello from function'
hello.tester = test
decorated_hello = raise_error(hello)
decorated_hello()
结果:
Hello from test
Hello from decorator
Hello from function