The “proper” way is to make a weapon class as a master class to derive weapons from that just handles what it spawns.
A simple interface call would do…
Then, when you create weapons and inherit from your weapon class.
All your standardized calls will be present, plus you can override for customization purposes…
This is kind of a basic OOP concept…