What do you mean by reuse nn.Module and sharing weights?
What you have done above is reusing nn.Module class, by doing simple python inheritance. You have inherited n.Module class and are now making a derived class that contains all of the methods of nn.Module class as well as any new methods you define.
Sharing of weights is something different and depends on architecture that you are making.