我正在学习Python 3,并希望编写一个简单的代码来学习装饰器.我试着运行这段代码:
def makebold(fn):
def wrapped():
return '' + str(fn) + ''
return wrapped()
def makeitalic(fn):
def wrapped():
return '' + str(fn) + ''
return wrapped()
@makebold
@makeitalic
def hello():
return "Hello World"
print(hello())
但是我收到以下错误:
Traceback (most recent call last):
File "E:\Msn Folder\92\Python\Projects\PythonSamplesByMsn\05 Functions\D03_Decorator01.py", line 29, in
print(hello())
TypeError: 'str' object is not callable
我做错了什么?我怎么能纠正这个?
解决方法:
你必须在返回wrapped()的末尾删除()并将str(fn)更改为str(fn()),因为必须调用fn函数对象.
用这个
def makebold(fn):
def wrapped():
return '' + str(fn()) + ''
return wrapped
def makeitalic(fn):
def wrapped():
return '' + str(fn()) + ''
return wrapped
@makeitalic
@makebold
def hello():
return "Hello World"
print(hello())
Hello World
标签:python,function,python-3-4,typeerror,python-decorators
来源: https://codeday.me/bug/20190528/1170833.html