0
我学习的装饰,并发现这个有用的线索,真正帮了我很多。 How to make a chain of function decorators?转换装饰自己的实现代码
根据我的理解,装饰者只是语法糖。不过,我无法从语法糖代码转换为非语法糖代码。
# Decorators
def addBold(func):
def wrapper(*arg1):
print("Bold Added")
return '<b>' + func(*arg1) + '</b>'
return wrapper
def addItalic(func):
def wrapper(*arg1):
print("Italic Added")
return '<i>' + func(*arg1) + '</i>'
return wrapper
此代码:
@addBold
def getHTMLCode(passedText):
return passedText
newVar = getHTMLCode('Hello')
print(newVar)
# outputs: Bold Added <b>Hello</b>
我试图转换到非语法糖的代码,但是这是不行的(TypeError: 'str' object is not callable
):
def getHTMLCode(passedText):
return passedText
newVar = addBold(getHTMLCode('Hello')) # returns wrapper
newVar()
什么工作代码(第二块)看起来像没有装饰者语法糖?