Passing input to the Linear model

I have a basic doubt regarding the syntax of the code while passing the input to the Linear model. Following is the code that I got from documentation.

m = nn.Linear(20, 30) //Line1
input = torch.randn(128, 20)//Line2
output = m(input) //Line3

Now my doubt is:
in Line1, m is the object that we created by sending the parameters (20, 30) to the init of the nn.Linear class. Now, in Line3 while passing the inputs how are we able to pass the inputs by calling m(inputs), as m is an object? Instead, what I think should have been the correct procedure for passing the inputs is:

output = m.forward(input)

Please clarify their approach as its a bit unclear to me and this is something that they have used throughout the documentation.

If you call the model directly, the internal __call__ method will be called, which will register hooks etc. and call forward itself.
You should therefore not call forward manually, but let the module do it.