2016-10-22 35 views
3

IPython的输出列表表示在一个漂亮的方式:如何在默认情况下漂亮的打印对象表示在IPython中

In [1]: test_list 
Out[1]: [<object_1>, 
     <object_2>, 
     <object_3>] 

我有对象,如:

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

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

test_object = Test() 

并在此IPython的表示是:

In [2]: test_list 
Out[2]: [<object_1>, <object_2>, <object_3>] 

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

+0

你期待什么?你想让object_i变得漂亮吗?如果是这样,你需要重写这些对象的__repr__。 – kabanus

+1

你的课堂'repr'使用了常规列表'repr',而不是'Ipython's'。一个简单的解决方法是将'repr'改为包含'\ n'。 – hpaulj

+0

@kabanus:我已经让对象的repr变得非常漂亮了,我期望的是将每个对象都打印在一个新行中(与IPython用于正常列表的方式相同)。 –

回答

1

(转贴作为一个答案)

为了得到一个列表,或任何物体的漂亮的印刷再版,请拨打:

from IPython.lib.pretty import pretty 
pretty(obj) 

如果你希望你的对象有一个漂亮的再版从分离它的正常repr(例如它不需要IPython到repr()它),你可以定义一个_repr_pretty_(self, cycle=False)方法。如果表示递归 - 例如cycle参数将为真。如果你把一个容器放在里面。