如何打印出“食物”清单?我所能打印的就像内存位置一样。
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
你定义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']