class RegistryMeta(type):
registry = {}
def __new__(cls, name, bases, dct):
new_class = super().__new__(cls, name, bases, dct)
cls.registry[name] = new_class
return new_class
class Base(metaclass=RegistryMeta):
pass
class Derived1(Base):
pass
class Derived2(Base):
pass
print(RegistryMeta.registry) # Output: {'Base': <class 'Base'>, 'Derived1': ..., 'Derived2': ...}
Dynamic class creation is useful when class structures depend on runtime information.