RegistryΒΆ
Whenever a new HasProperties class is created, it is added to the class
_REGISTRY defined on HasProperties.
This allows classes to be easily referenced and accessed by name. For example,
when serializing an instance, its __class__ may be saved. Then
on deserialization, the instance can be reconstructed based on the
corresponding entry in the registry.
_REGISTRY can also be overridden in HasProperties subclasses. This
creates a separate registry branch where all subclasses on the branch
are saved to the new registry. Overriding _REGISTRY may be necessary
to prevent namespace conflicts when importing multiple modules with
HasProperties classes.