在Python中访问类中的函数而不使用class.function()?
我在神经网络教程中遇到了以下代码。以下几行代码工作正常,尽管它们与我对Python类的了解相矛盾在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
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方法的。