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

PyTorch中继承nn.Module的子类调用super(自身类名,self).__init__()的作用是什么

super 显式传入当前类与 self 参数的用法说明

你看到的是 Python 兼容旧版本的标准写法,和 Python 3 中常用的无参 super().__init__() 功能完全一致,作用都是调用父类的构造方法完成初始化。

两个参数的具体含义如下:

  • 第一个参数为继承链查找的起始类:这里传入当前定义的类(比如示例中的 MobileNet、MobileNetSkipAdd),意思是从该类的父类开始向上查找要调用的 __init__ 方法,跳过当前类自身的 __init__ 实现,避免递归调用。
  • 第二个参数为方法绑定的实例对象:传入当前类的实例 self,保证父类的初始化逻辑执行时,所有属性操作都作用在当前创建的实例上。

对应到你给出的 PyTorch 代码示例:
两个自定义类都继承自 PyTorch 的模型基类 nn.Module,super(MobileNet, self).__init__() 本质就是调用 nn.Module 的构造方法,完成模型参数管理、设备绑定、钩子注册等基础逻辑的初始化,只有执行完父类初始化,子类才能正常使用 PyTorch 提供的各类模型能力。

补充说明:Python 3 对 super 做了语法糖优化,在类的实例方法内调用无参 super() 时,解释器会自动补全「当前类」和 self 两个参数,写法更简洁。不少需要兼容 Python 2 的老项目、或者习惯了旧版语法的开发者,还是会保留显式传参的写法,两种写法的执行逻辑没有任何差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:54:01