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

子类化keras.Model时call方法无法访问实例字段值的问题

错误原因与解决方法

错误原因

你把Python类的构造函数名称写错了——把__init__误写成了__int__(少了一个字母i)。这个错误导致初始化逻辑完全没被执行,self.my_info = "foo"根本没运行,所以实例化后的MyClass对象不存在my_info属性,调用call方法时就会触发AttributeError。

正确实现

把构造函数名称修正为__init__即可,修改后的完整代码如下:

class MyClass(keras.Model):
    def __init__(
        self,
        input_shape: tuple,
        classes_count: int = 10,
        model_name: str = 'model_name',
        **kwargs,
    ):
        super(MyClass, self).__init__(name=self.__class__.__name__, **kwargs)
        self.my_info = "foo"

    def call(self, inputs):
        x = self.my_info
        return x


var = MyClass((2, 2))
print(var.call("asd"))

运行这段代码就能正常输出foo,因为__init__方法会在实例化时执行,self.my_info被正确初始化,call方法就能正常访问这个属性了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:50:27