我想下面的輸出(從Marakana.com的excellent Python tutorial效仿:Python查詢 - 可迭代的方法?
>>> for c in lot.cars_by_age():
... print c
1981 VW Vanagon
1988 Buick Regal
2010 Audi R8
到目前爲止我的代碼:
class ParkingLot(object):
def __init__(self, spaces, cars=[]):
self.spaces = spaces
self.cars = cars
def park(self, car):
if self.spaces == 0:
print "The lot is full."
else:
self.spaces -= 1
self.cars.append(car)
def __iter__(self):
return (car for car in self.cars)
class Car(object):
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def __str__(self):
return '%s %s %s' % (car.year, car.make, car.model)
我想補充的方法(cars_by_age())到ParkingLot()類。但是,這種方法需要迭代,根據示例代碼。我不知道如何做到這一點 - 對於一個類,你定義了一個函數,但是你如何做到這一點一種方法?
一句警告:在一般情況下,在Python中,要避免可變對象(如表)作爲默認的參數(如'汽車= []'在你的init方法以上)。關於爲什麼在這裏的全部細節:http://effbot.org/zone/default-values.htm。 – Karmel