我有一个2d的对象数组,其中我为每个索引分配了一个对象:
for row in range(0, 9):
for column in range(0, 9):
self.Matrix[row][column] = Square(row, column)
其中Square()是一个接受特定索引的对象。每个Square对象都有一个方法构造函数(def __str__
),它将为特定的坐标打印特定的文本(例如“KN”)。我试过打印矩阵:
print self.Matrix()
但我最终得到了一个很长的东西,比如
[[<__main__.Square object at 0x101936d90>, <__main__.Square object at 0x101936dd0>, <__main__.Square object at 0x101936e10>, .....
如何打印实际物体?
答案 0 :(得分:2)
这种情况正在发生,因为您正在打印包含Matrix
的{{1}}。这会为Square
类调用__str__()
。如果您没有为该类定义Matrix
,该类返回包含其每个包含对象的__str__()
的字符串,它将为您提供{{1}这些对象中的每一个都由str()
定义。我不认为你定义了一个。如您所见,默认值只是一个内存位置。
这是一个带有存根类的演示:
repr()
解决方案是为__repr__()
定义一个特定>>> class A:
... def __str__(self):
... return 'a'
... def __repr__(self):
... return 'b'
...
>>> print(A())
a
>>> A()
b
>>> [A(), A()]
[b, b]
>>> print([A(), A()])
[b, b]
>>> print(*[A(), A()])
a a
,为每个包含的对象返回__str__()
,或为{{定义合适的Matrix
1}}对象(应该是可以传递给str()
以重新创建对象的东西,而不仅仅是“KN”)。
答案 1 :(得分:1)
您应该使用__repr __
difference between __repr__ and __str__
{
"data": [
{
"message": "science",
"created_time": "2015-11-23T07:01:00+0000",
"id": "21898300328_10154109572045329"
}
],
"paging": {
"previous": "https://graph.facebook.com/v2.5/21898300328/feed?limit=1&format=json&since=1448262060&access_token=&__paging_token=&__previous=1",
"next": "https://graph.facebook.com/v2.5/21898300328/feed?limit=1&format=json&access_token=&until=1448262060&__paging_token="
}
}