这个超级函数在哪里寻找__init __?

问题描述

我正在查看此python类,并试图弄清为什么super函数具有任何参数。如果我的理解是正确的,在这种情况下,不带参数的super()会执行相同的工作。我说得对吗?

这是代码

class Net(torch.nn.Module):
    def __init__(self,input_size,hidden_size):
        super(Net,self).__init__()
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.fc1 = torch.nn.Linear(self.input_size,self.hidden_size)
        self.relu = torch.nn.ReLU()
        self.fc2 = torch.nn.Linear(self.hidden_size,1)
        self.sigmoid = torch.nn.Sigmoid()
    
    def forward(self,x):
        hidden = self.fc1(x)
        relu = self.relu(hidden)
        output = self.fc2(relu)
        output = self.sigmoid(output)
        return output

解决方法

在Python 2中,参数不是可选的。在Python 3中,有一种特殊的编译器魔术来确定要忽略的参数。在Net.__init__的上下文中,super()等效于super(Net,self)