如何在 IPython 中漂亮地打印对象表示

Dom*_*kuš 5 ipython

默认情况下,IPython 以一种漂亮的方式输出列表表示:

In [1]: test_list
Out[1]: [<object_1>,
         <object_2>,
         <object_3>]
Run Code Online (Sandbox Code Playgroud)

我有这样的对象:

class TestObject(object):
    def __init__(self):
        self._list = [<object_1>, <object_2>, <object_3>]

    def __repr__(self):
        return self._list.__repr__()

test_object = Test()
Run Code Online (Sandbox Code Playgroud)

而 IPython 对此的表示是:

In [2]: test_list
Out[2]: [<object_1>, <object_2>, <object_3>]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得我的对象表示的列表方式?

Tho*_*s K 5

要获取列表或任何对象的漂亮打印repr,请调用:

from IPython.lib.pretty import pretty
pretty(obj)
Run Code Online (Sandbox Code Playgroud)

如果你想让你的对象有一个漂亮的 repr 与它的正常 repr 分开(例如,它不需要 IPython repr()),你可以定义一个_repr_pretty_(self, cycle=False)方法。cycle如果表示递归,则该参数将为 true - 例如,如果您将容器放入其内部。