apozas:

I wanted to ask, firstly, if the kind of behavior I would desire (being able to call only to model.W and having only “weights” in model.state_dict() , both referring to the same Parameter ) is common/good practice


No! This is decidedly not good style. You are trading conceptual simplicity for saving a few characters (6 instead of 12).
Now, what you can do if your forward uses self.weights so often that you don’t want to spell it?
I think a perfectly good solution is to do a local assignment W = self.weights at the beginning of the forward (or whatever method uses W). If you use it often enough, it’ll even be less characters.
Best regards
Thomas