fork download
  1. import builtins
  2. from functools import partial
  3.  
  4. class Object:
  5. def __repr__(self):
  6. cls = type(self)
  7. return f'<{cls.__module__}.{cls.__qualname__} object>'
  8.  
  9. class Type(type):
  10. def __new__(metacls, name, bases=None, namespace=None, **kwargs):
  11. if bases is None:
  12. return __class__.__base__(name)
  13. if all(base.__repr__ is object.__repr__ for base in bases):
  14. if bases and bases[-1] is object:
  15. bases = bases[:-1]
  16. bases += Object,
  17. return super().__new__(metacls, name, bases, namespace, **kwargs)
  18.  
  19. builtins.type = Type
  20. builtins.__build_class__ = partial(__build_class__, metaclass=type)
  21.  
  22. from enum import Enum
  23.  
  24. class A:
  25. pass
  26.  
  27. B = type('B', (A,), {})
  28.  
  29. class C(Enum):
  30. c = B()
  31.  
  32. print(A())
  33. print(B())
  34. print(C.c.value)
Success #stdin #stdout 0.11s 15496KB
stdin
Standard input is empty
stdout
<__main__.A object>
<__main__.B object>
<__main__.B object>