在Python中访问类中的函数而不使用class.function()?

在Python中访问类中的函数而不使用class.function()?,python,neural-network,Python,Neural Network,我在神经网络教程中遇到了以下代码。以下几行代码工作正常,尽管它们与我对Python类的了解相矛盾 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(28 * 28, 200) self.fc2 = nn.Linear(200, 200) self.fc3 = nn.Linear(200, 10) def

我在神经网络教程中遇到了以下代码。以下几行代码工作正常,尽管它们与我对Python类的了解相矛盾

class Net(nn.Module):
    def __init__(self):
      super(Net, self).__init__()
      self.fc1 = nn.Linear(28 * 28, 200)
      self.fc2 = nn.Linear(200, 200)
      self.fc3 = nn.Linear(200, 10)

  def forward(self, x):
      x = F.relu(self.fc1(x))
      x = F.relu(self.fc2(x))
      x = self.fc3(x)
      return F.log_softmax(x)


net = Net()
net_out = net(data)
在这里,一些数据被传递到net.forward并执行forward

但是,据我所知,我们必须使用net.forwarddata而不是netdata来访问函数forward。因此,有人能告诉我为什么我们可以访问forward而不提及函数名吗?是否有某种规则允许我们在不使用类名的情况下访问类中的函数。函数名?

Python有一组神奇的方法,您可以覆盖这些方法来更新对象的行为。在这种特殊情况下,实现net_out=netdata的一种方法是覆盖uu call_u函数,您可以在这里签出该函数

我想覆盖发生在nn.Module中。如下所示:

课程模块: ... def uuu call uuu self,arg: self.forwardarg ... Python有一组神奇的方法,您可以覆盖这些方法来更新对象的行为。在这种特殊情况下,实现net_out=netdata的一种方法是覆盖uu call_u函数,您可以在这里签出该函数

我想覆盖发生在nn.Module中。如下所示:

课程模块: ... def uuu call uuu self,arg: self.forwardarg ...
据我所知,这不会发生。请记住,运行的代码比您在这里展示的要多——基类nn.Module将有自己的方法定义,也可供您的类实例访问。显然,它定义了一个.__调用__方法,这就是net。。。调用它可能会间接调用你的.forward方法。据我所知,这不会发生。请记住,运行的代码比你在这里展示的要多——基类nn.Module将有自己的方法定义,也可以访问你的类实例。显然,它定义了一个.__调用__方法,这就是net。。。调用可能间接调用.forward方法的。