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

Python装饰器运行报'NoneType' object is not callable错误求解

错误原因

Python 装饰器是语法糖,@register 等价于执行 f1 = register(f1)。你定义的 register 函数没有显式设置返回值,默认返回 None,经过装饰后,原 f1、f2、f3 变量都会被覆盖为 None,调用时自然触发 NoneType 不可调用的报错。

修复方案

在 register 装饰器末尾显式返回被装饰的函数对象即可:

def register(func):
    print(f'running registry -> {func}')
    registry.append(func)
    return func

修改后运行代码,会先在模块导入阶段执行三次 register 逻辑将三个函数加入注册列表,调用 f1()、f2()、f3() 时就会正常输出对应内容,和《FluentPython》7.2 节示例效果一致。


内容的提问来源于stack exchange,提问作者S Gunecha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:27:06