Python 查询 - 可迭代的方法?

标签 python oop methods iteration

我正在尝试模拟以下输出(来自 Marakana.com 的 excellent Python tutorial:

>>> 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)

我想向 ParkingLot() 类添加一个方法 (cars_by_age())。但是,根据示例代码,此方法在某种程度上需要是可迭代的。我不确定如何执行此操作 - 对于一个类,您定义了一个 iter 函数,但是您如何为一个方法执行此操作?

最佳答案

并不是说方法 是可迭代的;该方法返回的值 是可迭代的。 cars_by_age 实现可以简单地返回一个 Car 列表。

def cars_by_age(self):
    return sorted(self.cars, key=lambda car: car.year)

使用sorted创建一个新的排序列表,并使用 lambda指定您要按汽车的 year 属性排序。

http://wiki.python.org/moin/HowTo/Sorting

关于Python 查询 - 可迭代的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742239/

相关文章:

java - 易于在 Java 中访问的静态数据

java - android 在哪里放置 OnClickListener OOP 明智的?

php - php中的kill方法链

java - 我如何更改此方法以获取字符串而不是整数

Python NetworkX MatplotLib DiGraph 查找路径长于两的所有树

python - 如何在函数中获取python异常回溯

python - 关于Python线程Lock对象

python - 如何使用 Django 在 Python 中过滤有序字典?

php - 在 PHP 中使用单例

javascript - 获取谷歌地图中已创建标记的位置(纬度,经度)