The main goals of this approach are:
* The problem described in the previous post are avoided. What is per-instance stays per-instance, and what is shared stays shared; subclassing doesn't change one into the other.
* The code to create a subclass looks reasonably elegant and straightforward and not too wordy.
* The result is reasonably efficient in space and time
The approach here also meets one nice but less important goal:
* The approach can be used to subclass from a class not specifically built to work with this approach - in other words, when not subclassing, you make classes in the normal way.
I shan't include a comparison with any other specific solutions here, but if there are any you're interested in, ask me.