// TODO: look into merging this with `enum` and `ChoicesMixin`, which describe a fixed set of
// singletons, to decouple the enum interface from the implementation as a `datatype`.
// Extend Singleton and your class becomes a singleton, each construction returns the same instance.
Singleton = SingletonMetaclass("Singleton", (object,), {})
After Change
return cls.instance
T = TypeVar("T")
class ClassPropertyDescriptor:
Define a readable attribute on a class, given a function.