I really like this. I had already implemented using hashmaps in an OO type fashion for a project but, the main purpose was for inheritance. I am looking at changing up my project and seeing the pros/cons of using this. I like a lot of the features such as constructor/destructor and the sealed option. However, looking at my project and what I would have to change or add I run into a big con. Class definitions. I cant see a clean way to provide a simple base class and inherit from it without duplicating a bunch of class def arrays everywhere. That, or handling inserting new properties or methods to the def array in code which can break very easily. I'd type up an example but, it would become a much longer post. I hope you understand what I mean by an explosion of definitions could occur in a project. A proposed simple solution might be to allow using a hashmap as an alt definition
Although child classes would be less bulky (only overriding whats needed), an even cleaner way to do it is to have class definitions in a config file and use the #str property as the type name. Reading from config can be done in a self-implemented function but, to have it natively would be awesome.