【发布时间】:2013-07-01 18:27:04
【问题描述】:
所以...
这行得通
def makeBold(fn):
def wrapped():
return '<b>'+fn()+'</b>'
return wrapped
@makeBold
def sayhello():
return 'Ey yo wassup'
并产生预期的Ey yo wassup
但是,这不起作用
def makeBold(fn):
def wrapped():
return '<b>'+fn()+'</b>'
return wrapped
def makeItalic(fn):
def wrapped():
return '<i>'+fn()+'</i>'
@makeItalic
@makeBold
def sayhello():
return 'Ey yo wassup'
所有这些都会产生这个不错的 NoneType 错误...
我认为它会产生类似 Ey yo wassup
想法?
【问题讨论】:
-
你忘记从
makeItalic返回wrapped。 -
如果标签顺序对你来说很重要,装饰器会从内到外应用,所以上面会返回
<i><b>Ey yo wassup</b></i> -
好消息,我在修复后注意到了这一点。谢谢帕维尔!