当我创建未绑定的super
对象时,IPython
会将其显示为<super: None, None>
。然而,str(...)
和repr(...)
以及交互式普通Python解释器都将其显示为<super: <class 'object'>, NULL>
,这提供了更多信息。我知道IPythons displayhook与default Python displayhook不同,但这种差异是否解释了不同的表述? IPython
从哪里获取内置对象的显示?
在ipython3
:
In [1]: super(object)
Out[1]: <super: None, None>
In [2]: str(_1), repr(_1)
Out[2]: ("<super: <class 'object'>, NULL>", "<super: <class 'object'>, NULL>")
在python3.3
:
>>> super(object)
<super: <class 'object'>, NULL>
>>> from IPython.core import displayhook, interactiveshell
>>> print(displayhook.DisplayHook(interactiveshell.InteractiveShell()).compute_format_data(super(object)))
WARNING: IPython History requires SQLite, your history will not be saved
({'text/plain': '<super: None, None>'}, {})
发生了什么事?
答案 0 :(得分:2)
好好发现,谢谢。这是IPython中的一个错误,我刚刚修改了this pull request。
IPython计算IPython.lib.pretty
中许多内置类型的表示。这对于编译的正则表达式模式很有用,其中默认的repr只是<_sre.SRE_Pattern object at 0x7f...
。