An objectReferrence is a thing in the skyrim world. There is no generic way in papyrus to tell the engine to create a new thing out of thin air which makes sense as papyrus is actually separate from the game world. How would the game world know anything about position or the like about the new object? However there are a number of specific ways to create new things. The most common is to take an existing ObjectReference and then PlaceAtMe() your new thing. Like
objectReferrence someObject ; filled somehowobjectReference tempRef = someObject.PlaceAtMe(MyExtendedClass)MyExtendedClass objMyClass = tempRef as MyExtendedClass
PlaceAtMe() takes a Form so it will take anything that extends form so MyExtendedClass is valid. However PlaceAtMe() returns an ObjectReference so you will have to explicitly cast it to MyExtendedClass if you want to use your functions.
If your script isn't supposed to actually be in the game world it shouldn't extend ObjectReference. But I don't believe you can't create new instances of other classes either. Papyrus is a bit of a strange beast depending on what languages you are used to. You could do something like
weapon property IronSword autoWeapon myWeapon = ironSword
But Weapon forms can't themselves be placed, they exist as the base that hold the stats for all objectReferences of type IronSword so modifying IronSword changes all the iron swords in the game. A new IronSword both wouldn't compile but would be meaningless if it did since there could only possibly be one IronSword form. Changing IronSword or myWeapon in the snippet would have the same effect since even though they have different names they refer to the same thing in the engine.