为何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
相关产品推荐
相关产品推荐

