[英]Python decorator from chained calls
I am trying to create a decorator from a chain of calls. 我正在尝试从一系列调用中创建一个装饰器。 It does not seem to be supported by syntax. 它似乎不受语法支持。
from functools import wraps
class Bar:
def wrapper(self):
def _outer(fun):
@wraps(fun)
def _f(*a, **kw):
print('I am in decorator')
return fun(*a, **kw)
return _f
return _outer
def foo():
return Bar()
# @foo().wrapper() # Invalid syntax
# def f():
# pass
# @(foo().wrapper()) # Invalid syntax
# def f():
# pass
def f():
pass
f = foo().wrapper()(f)
f()
Am I missing something? 我错过了什么吗? For some reasons, such a thing would be extremely useful in my project. 出于某些原因,这样的事情在我的项目中非常有用。
Thanks 谢谢
You could do this: 你可以这样做:
wrapper = foo().wrapper()
@wrapper
def foo():
pass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.