【发布时间】:2014-03-25 12:39:01
【问题描述】:
我是 python 新手,现在正在学习 装饰器。这是我正在处理的 python 装饰器示例:
def makeHtmlTag(tag, *args, **kwds):
def real_decorator(fn):
css_class = " class='{0}'".format(kwds["css_class"]) \
if "css_class" in kwds else ""
def wrapped():
return "<"+tag+css_class+">" + fn() + "</"+tag+">"
return wrapped
return real_decorator
@makeHtmlTag(tag="i", css_class="italic_css")
def hello():
return "hello world"
print hello()
当我只用一行替换函数wrapped()时:
return "<"+tag+css_class+">" + fn() + "</"+tag+">"
我收到TypeError。这是为什么呢?
【问题讨论】:
-
真正的装饰器需要返回一个函数,而不是一个字符串。
标签: python decorator python-decorators