Python-如何制作一个功能装饰链?
如何在Python中制作两个装饰器,以完成以下工作?
@makebold@makeitalic
def say():
return "Hello"
…应返回:
"<b><i>Hello</i></b>"
我并不是想HTML
在实际的应用程序中采用这种方式-只是想了解装饰器和装饰器链接是如何工作的。
回答:
查看文档,以了解装饰器如何工作。
from functools import wrapsdef makebold(fn):
@wraps(fn)
def wrapped(*args, **kwargs):
return "<b>" + fn(*args, **kwargs) + "</b>"
return wrapped
def makeitalic(fn):
@wraps(fn)
def wrapped(*args, **kwargs):
return "<i>" + fn(*args, **kwargs) + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
@makebold
@makeitalic
def log(s):
return s
print hello() # returns "<b><i>hello world</i></b>"
print hello.__name__ # with functools.wraps() this returns "hello"
print log('hello') # returns "<b><i>hello</i></b>"
以上是 Python-如何制作一个功能装饰链? 的全部内容, 来源链接: utcz.com/qa/413070.html