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

TensorFlow自定义模型继承中super()两种写法的差异探究

两种super()写法的区别解析

这两种写法本质就是Python的新旧语法差异,具体区别如下:

  • super().__init__():这是Python 3引入的简化写法,不用显式指定当前类和self参数,解释器会自动根据上下文推断出当前类和实例对象,代码更简洁易读。
  • super(ResNet, self).__init__():这是Python 2的标准写法,必须显式传入当前类名和self实例,在Python 3中也能兼容,但写法相对繁琐。

你测试两种写法结果一致的原因很简单:

  • 两种写法最终都是调用父类tf.keras.Model的__init__方法,初始化逻辑完全相同
  • 你的ResNet属于单继承场景(只继承自tf.keras.Model),这种情况下两种写法的效果没有任何区别

只有在多继承的复杂场景下,两种写法才可能产生差异:Python 3的简化写法会遵循*MRO(方法解析顺序)*自动处理,而显式指定类名的写法可以手动指定从哪个父类开始查找方法,但这种场景在Keras自定义模型里很少碰到。

总结一下,在Python 3环境下,推荐用super().__init__()的简化写法,代码更简洁,而且完全兼容现有逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:03:13