You've reinvented prototype-based OO. Check out
Class::Prototyped. This is also Javascript's OO model, based on Self.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?