Yes, Thank you it worked for the plain dict part.
So for assigning instances of Module2 in module1, and assigning Module1 instance from some other class (apart from a dictionary),  nn.ModuleList should be used.
Eg: -
self.mod1 = nn.ModuleList(Module2(input_dim=self.input_dim,
                                                output_dim=self.output_dim,
                                                support1=self.support1,
                                                support2=self.support2,))

self.mod2 = nn.ModuleList(Module1(input_dim, output_dim, support1, support2))

Thanks.