Как вызвать метод объекта в другом объекте (Python) - PullRequest
0 голосов
/ 16 февраля 2019

Изучает Python и хотел бы понять, как вызвать метод объекта, который является составной частью другого класса .

Например, в приведенном ниже коде (адаптирован из моего предыдущего вопроса , как можно вызвать метод get_top_speed одного из car объектов, которые находятся внутри garageobject?

class Car:
    def __init__(self, id, top_speed):
       self.id = id
       self.top_speed = top_speed

    def get_id(self):
        return self.id

    def get_top_speed(self):
        return self.top_speed

class Garage:
    def __init__(self):
        self.cars_holder = {}

        def add_car(self, car):
        self.cars_holder[car.get_id()] = car

    def remove_car(self, car_id):
        del self.cars_holder[car_id]

    def show_cars(self):
        for car in self.cars_holder.values():
            print(car)

GARAGE_DICT = [{'id': '1x148i-36y5-5rt2',
                'dimensions': {'top': 275,
                               'left': 279,
                               'width': 75,
                               'height': 75},
                'attrs': {'weight': 12,
                          'top_speed': 0.7,
                          'noise': 0.45
                          }},
                {'id': '223a3-33e5-4ea3',
                 'dimensions': {'top': 241,
                                'left': 234,
                                'width': 71,
                                'height': 65},
                 'attrs': {'weight': 12,
                           'top_speed': 0.74,
                           'noise': 0.4345
                           }
                 }]

if __name__ == "__main__":
    garage = Garage()

    for car_dict in GARAGE_DICT:
        attrs = car_dict['attrs']
        dimensions = car_dict['dimensions']
        garage.add_car(Car(car_dict['id'], attrs['weight'], attrs['top_speed'], attrs['noise'],
                       Size(dimensions['top'], dimensions['left'], dimensions['width'], dimensions['height'])))

   top_speed_of_first_car_in_garage = garage[0].get_top_speed  # ?

Пытался найти примеры в Интернете, но не смог найти ничего на Python.

1 Ответ

0 голосов
/ 16 февраля 2019

Получить объект Car из словаря Garage.cars_holder и вызвать для него метод:

print(garage.cars_holder[some_id].get_top_speed())

Это работает точно так же, как:

car_1 = Car(...)
print(car_1.get_top_speed())

ТолькоРазница в том, что эти Car объекты находятся внутри некоторой структуры данных.

...