PyTorch 中的未知 Python 语法:一个实例可以直接接收一个参数

Unknown Python syntax in PyTorch: a instance can directly receive a parameter

我在学习 PyTorch 时对 Python 语法有疑问。以下代码是 PyTorch 文档中的示例。

m = nn.Linear(20, 30)
input = autograd.Variable(torch.randn(128, 20))
output = m(input)
print(output.size())

第一行是创建一个实例m,但是为什么这个实例m可以像第3行那样直接接收一个参数呢?我认为它应该使用方法来处理像 m.method(input).

这样的参数

在 python 中,任何对象都可以定义一个 __call__ 方法,允许它像您的示例中那样用作函数。

参考:https://docs.python.org/2/reference/datamodel.html#object.call