You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

出现AttributeError: 'str'对象无__name__属性,该如何修复?

错误原因及修复方法

错误原因

你的装饰器make_bold最后返回的是wrapper(),这会立即执行wrapper函数,返回的是一个字符串(<b>Hello, World!</b>)。而Flask的路由装饰器@app.route("/")需要接收一个函数对象,当它尝试访问这个字符串的__name__属性时,就会抛出AttributeError: 'str' object has no attribute '__name__'错误。

修复方法

将装饰器中return wrapper()改为return wrapper,返回wrapper函数对象,而不是执行后的结果。这样装饰器才能正确包装目标函数,在请求触发时才执行包装后的逻辑。

修改后的完整代码

app = Flask(__name__)

def make_bold(function):
    def wrapper():
        return '<b>' + function() + '</b>'
    return wrapper  # 直接返回函数对象,不再调用

@app.route("/")
@make_bold
def hello_world():
    return 'Hello, World!'

app.run(debug=True)

内容的提问来源于stack exchange,提问作者Prince Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:14:51