我试图创建一个列表,它象征一个平铺的房间,并且每个元素都被初始化为False。下面是我的初始化,我在最后添加了一个打印循环,这样我可以确保它工作。你知道吗
class Room(object):
def __init__(self,width,height):
#create a room of size width x height populated with False
room = [[False for i in range(width)] for j in range(height)]
#print statement to verify it worked
for row in room: print row
这产生了一个很好的矩阵,看起来像一个瓷砖房间。然后我尝试编写一个__str__
方法,以相同的格式输出对象。你知道吗
def __str__(self):
for row in self:
print row
我想要这个,这样我可以检查矩阵,因为我正在操纵它,但当我试图这样做
print object
我总是
TypeError: 'Room' object is not iterable
为什么这在__init__
中有效而在__str__
方法中无效?我仍然在绕着我的头。你知道吗
您应该在
__init__
方法中将变量室创建为self.room
,然后在语句中将其再次引用为self.room
:现在变量
room
仍然是__init__
函数的局部变量。你知道吗因为您还没有在类上实现
__iter__
方法。尽管你不需要一个来完成你想要完成的事情:通过在类上实现
__iter__()
方法,可以使self
iterable:将使您的课程变得更加易学:
相关问题 更多 >
编程相关推荐