打印其元素为类对象的列表

时间:2014-09-06 13:51:35

标签: python object printing

我正在尝试打印一个列表,其元素是用户定义类的所有对象,如下例所示:

class Athing:
    def __init__(self,thething):
      self.aray = thething

  # Representation of thing for printing
  def __str__(self):          
      return '['+ ', '. join(str(i) for i in self.aray) + ']'

this_thing = []
for j in range(2):
    this_thing.append(Athing([[j,j+2,j+3], [j*2,j+5,j+6]]))
print 'this_thing =\n',this_thing
print 'this_thing[0] =\n',this_thing[0]

上面的代码给出了以下结果:

this_thing =
[<__main__.Athing instance at 0x109dec368>, <__main__.Athing instance at 0x109dec3f8>]
this_thing[0] =
[[0, 2, 3], [0, 5, 6]]

为什么Athing个对象列表无法明确打印出来 要求对象,如第二次印刷,我该怎么做 第一次印刷工作?

1 个答案:

答案 0 :(得分:1)

打印包含对象的列表使用__str__作为列表本身,但list.__str__的实现为每个对象调用__repr__ - 在您的情况下为Athing()。

因此,您希望覆盖__repr__,因此您不必覆盖__str__

  

如果某个类定义了 repr ()而不是 str (),则 repr ()是   当用于实例的“非正式”字符串表示时也使用   该课程是必需的