我正在尝试打印一个列表,其元素是用户定义类的所有对象,如下例所示:
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
个对象列表无法明确打印出来
要求对象,如第二次印刷,我该怎么做
第一次印刷工作?
答案 0 :(得分:1)
打印包含对象的列表使用__str__
作为列表本身,但list.__str__
的实现为每个对象调用__repr__
- 在您的情况下为Athing()。
因此,您希望覆盖__repr__
,因此您不必覆盖__str__
:
如果某个类定义了 repr ()而不是 str (),则 repr ()是 当用于实例的“非正式”字符串表示时也使用 该课程是必需的