Изменена ли реализация __class__ в IPython по отношению к Python?

1

Я пытаюсь сравнить функцию __class__ в Python и IPython с функцией type() в обоих и задаюсь вопросом, существует ли ниже разница в поведении из-за модификации __class__ в IPython по Python.

питон

>>> [].__class__
<class 'list'>
>>> type([])
<class 'list'>

IPython

In [2]: [].__class__
Out[2]: list

In [3]: type([])
Out[3]: list

Но с печатью все еще, похоже, ссылается на Python __class__

питон

>>> print(type([]))
<class 'list'>

IPython

In [4]: print(type([]))
<class 'list'>
  • 2
    Я предполагаю, что это sys.displayhook IPython, который изменен: list прежнему ссылается на <class 'list'> , он просто печатается по-другому.
Теги:
ipython

1 ответ

1
Лучший ответ

Здесь, где происходит волшебство:

In [1] import sys
In [2] sys.displayhook
Out[2]: <IPython.terminal.prompts.RichPromptDisplayHook at 0x7f6c42b08190>

против

>>> import sys
>>> sys.displayhook
<built-in function displayhook>

Отображаемый объект (list или <class 'list'>) - это тот же объект. Используя sys.displayhook, IPython изменяет способ отображения в интерактивном REPL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню