This tutorial 3 might be a good starter to understand why nn.Modules are built in this way.
The TL;DR: all parameters and submodules are defined and registered in the __init__ and used in the forward method.