Изменена ли реализация __class__ в IPython по отношению к Python? - PullRequest
0 голосов
/ 19 октября 2018

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

Python

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

IPython

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

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

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

Python

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

IPython

In [4]: print(type([]))
<class 'list'>

1 Ответ

0 голосов
/ 19 октября 2018

Вот где происходит волшебство:

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.

...