I've always thought that Jupyter simply printed out the
obj = type(2)
Basically what it does is it gets the class' name via
cls.__qualname__ (py3) or
cls.__name__ (py2&3) and the module via
cls.__module__, and prints them as
<module.name>. For builtins, the module name is silently ignored.