Scenes are inheritable in Godot. Create a base Weapon.tscn scene with common nodes like collision detection, sprites, sound, etc; and Weapon.gd script attached. Right-click on the scene file, choose "New Inherit Scene", change the root node name for the weapon you want. You can then change any node parameters, add other nodes or extend Weapon.gd (right-click on root node, choose "Extend Script".
I use this method to create complex hierarchies, for example:
# scene with mesh, animation clips, sounds
WarriorAssets
MageAssets
SlimeAsset
SkeletonAsset
# Hierarchy
Character - collision detection setup, movement functions, and other helpers functions.
Player - calls movement functions based on player's input
Warrior - specific configurations/artwork, add WarriorAssets as child node
Mage - specific configurations/artwork, add MageAssets as child node
Enemies - calls movement functions based on AI
Slime - add SlimeAsset as child node
Red Slime - use RedSlimeMaterial
Blue Slime - use BlueSlimeMaterial
Skeleton - add SkeletonAsset as child node
BanditWarrior - add WarriorAssets as child node
BanditMage - add MageAssets as child node
NPC - player interaction and calls movement functions based on AI
PetSlime - add SlimeAsset as child node
CitySkeleton - add SkeletonAsset as child node
CommonFolk - ...
Shopkeeper - ...
InnReceptionist - ...
PotionMerchant - ...
WeaponMerchant - ...
Guards - ...