首页 > 解决方案 > Python - 如何访问 aggergate 中的类对象属性(对于该类的所有实例)?

问题描述

我正在设计一个 python 程序来模拟 3+ 辆汽车的车队。我为每辆车建立了一个具有特定属性和功能的车辆类:

class Vehicle():
    
    def __init__(self, VIN, color, odometer):
        self.VIN = VIN
        self.color = color
        self.odometer = odometer
        
    # many other functions...

我的目标是访问“舰队”的参数并回答以下问题:

  1. 总共有多少辆汽车?
  2. 所有里程表的总和(距离)是多少?
  3. 有多少辆红色汽车?

有人建议我使用抽象基类,但不确定这是否是最好的方法?回答这些问题的推荐方法是什么?谢谢。

我在下面创建了一个简单的尝试/模拟代码:

class Fleet:
    def __init__(self, input_vehicles):
        "Pass list of vehicle objects to create fleet"
        self.vehicle_list = input_vehicles
        
    def size_total(self):
        "Answer how many vehicles"
        return len(self.vehicle_list)
    
    def size_by_color(self, selected_color):
        "Answer how many cars of a specific color"
        c = 0
        for v in self.vehicle_list:
            if v.color == selected_color:
                c = c + 1
        return c
    
    def total_odometer(self):
        "Answer the total odometer (distance) readings"
        od = 0
        for v in self.vehicle_list:
            od = od + v.odometer
            
        return od

# build vehicles
V1 = Vehicle('1', 'red', 100)
V2 = Vehicle('2', 'red', 3000)
V3 = Vehicle('3', 'blue', 5)

# build fleet
myfleet = Fleet([V1, V2, V3])

# Get fleet metrics
myfleet.size_total()         # returns 3
myfleet.size_by_color('red') # returns 2
myfleet.total_odometer()     # returns 3105

标签: pythonclassabstract-class

解决方案


推荐阅读