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

为何Python类实例predictions属性未更新?__call__方法未触发

为何Python类的__call__方法未自动执行导致predictions为空?

问题原因

你混淆了__call__方法的触发逻辑:它不会在对象实例化时自动运行,只有当把创建好的对象当作函数调用时(比如l()),这个方法才会被触发执行。

你的代码里只执行了l = Learner(),这仅仅调用了类的__init__方法,将self.predictions初始化为空列表,但从未触发__call__,所以predictions始终保持为空。

修复方案

方案1:手动触发__call__方法

如果你需要保留__call__的逻辑,在实例化对象后显式调用它:

class Learner():
    def __init__(self):
        self.predictions = []

    def get_predictions(self):
        return self.predictions
    
    def __call__(self):
        self.predictions = [1,2,3]
        

l = Learner()
l()  # 调用对象,触发__call__方法赋值
print(l.get_predictions())  # 输出[1,2,3]

方案2:将赋值逻辑移到__init__中

如果希望对象创建时就完成predictions的赋值,直接把逻辑放到初始化方法里:

class Learner():
    def __init__(self):
        self.predictions = [1,2,3]  # 实例化时直接赋值

    def get_predictions(self):
        return self.predictions
        

l = Learner()
print(l.get_predictions())  # 输出[1,2,3]

内容的提问来源于stack exchange,提问作者some nooby questions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:39:27