Python 中的 super(类名, self).__init__() 的含义

 


Question

pytorch 中定义的神经网络类的 __init__() 中,经常定义 super(类名, self).__init__(), 解释下这句话。比如:

class TestNN(nn.Module):
# 初始化函数
def __init__(self, parm1, ...):
super(TestNN, self).__init__()
pass

Answer

这其实是 python 中的魔术方法。

__init__() 方法在 Python 中通常被称为“初始化方法”或“构造器”,但它并不是严格意义上的构造函数。在 Python 中,构造函数实际上是 __new__() 方法,而 __init__() 方法是在对象创建后进行初始化的方法。

让我们重新聚焦在选定的代码上:

super(类名, self).__init__()

详细解释

  1. super(类名, self):

    • super() 是一个内置函数,用于调用父类的方法。
    • 类名 是当前类的名称。
    • self 是当前类的实例。
    • super(类名, self) 返回一个临时对象,该对象允许调用 类名 类的父类的方法。
  2. __init__():

    • __init__() 是类的初始化方法,用于在对象创建后进行初始化。
    • 通过调用 super(类名, self).__init__(),实际上是在调用 类名 类的父类的初始化方法。

主要功能

这段代码的主要功能是调用 类名 类的父类 nn.Module 的初始化方法,以确保 nn.Module 的初始化逻辑得以执行。这样做的好处是,类名 类能够继承 nn.Module 的所有属性和方法,从而成为一个有效的 PyTorch 神经网络模块。

通过这种方式,类名 类可以在不重复编写 nn.Module 的初始化代码的情况下,利用 nn.Module 提供的功能,如参数管理、前向传播等。

总结

虽然 __init__() 不是严格意义上的构造函数,但在 Python 中,它通常被称为构造器,因为它在对象创建后立即执行,用于初始化对象的状态。这段代码的主要功能是确保 类名 类的父类 nn.Module 的初始化逻辑得以执行,从而继承其所有功能。

posted @   Zenith_Hugh  阅读(203)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

微信打赏