如何打印出"食物清单?#34;? 我所能打印的就像记忆位置一样。
class Fridge:
isOpened = False
foods = []
def open(self):
self.isOpened = True
print "Fridge open"
def put(self, thing):
if self.isOpened:
self.foods.append(thing)
print 'Food in'
else:
print 'Cannot do that'
def close(self):
self.isOpened = False
print 'Fridge closed.'
def __repr__(self):
return "%s" % (self.foods[0])
class Food:
pass
答案 0 :(得分:0)
您定义repr()
的方式,它只会生成列表foods
中的第一项(如foods[0]
所示)。此外,如果列表foods
为空,则调用repr()
将导致IndexError
。
打印列表的一种方法是:
def __repr__(self):
return str([food for food in self.foods])
如果您不熟悉语法,请查看 List Comprehensions 。
以下是您班级的示例用例:
>>> f = Fridge()
>>> f.open()
Fridge open
>>> f.put("Fruit")
Food in
>>> f.put("Vegetables")
Food in
>>> f.put("Beer")
Food in
>>> print f
['Fruit', 'Vegetables', 'Beer']