我試圖創建一個象徵平鋪房間的列表,並且每個元素都被初始化爲False。下面是我的初始化,我在最後添加了一個打印循環,所以我可以確保它的工作。爲什麼我可以從__init__打印這個列表,而不是從__str__方法
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__
方法?我仍然圍繞着OOP。眼下
for row in self.room:
您的變量room
依舊是局部的__init__
功能:
不僅如此,他試圖循環「自我」......是的,我知道你知道這一點。 –
好的,爲了讓這個方法以外的東西可用,我必須在它前面有自己的東西(比如self.room)?這就說得通了。是的,我讓自己循環,因爲我不確定還有什麼要告訴它自己循環。我知道自己必須在那裏。感謝大家的幫助。 – largedon
你也不想從'__str __()'打印。你想要返回一個字符串。 – Kevin