我对以下练习有疑问:https://pythonprogramming.net/decorators-intermediate-python-tutorial/ 这是我想写的代码:
def add_wrapping(item):
def wrapped_item():
return 'a wrapped up box of {}'.format(str(item()))
return wrapped_item
@add_wrapping
def new_gpu():
return 'a new Tesla P100 GPU!'
print(new_gpu())
这是我的代码:
def add_wrapping(item):
def wrapped_item():
return "a wrapped up box of {}".format(str(item()))
return wrapped_item()
@add_wrapping
def new_gpu():
return "new car!"
print(new_gpu())
我在PyCharm工作,这是错误,它给了我:
line 17, in <module>
print(new_gpu())
TypeError: 'str' object is not callable
我在这一点上陷入困境,无法弄清楚出了什么问题,感谢任何帮助!
答案 0 :(得分:1)
首先,您需要返回wrapped_item
个对象,而不是返回wrapped_item()
func
参数。
def add_wrapping(func):
def wrapped_item():
return "a wrapped up box of " + func()
return wrapped_item
@add_wrapping
def new_gpu():
return "new car!"
print(new_gpu())
但如果您在str
函数中返回new_gpu
参数,它将会起作用。