Изменить поведение метода класса являющегося свойством друго класса

Есть вот такая схема. Класс Car при инициализации в свойства записывает объекты классов Wheels и Motor.

сlass Car:

    def __init__(self):
        self.wheels = Wheels()
        self.motor = Motor()

    def add_element(self, method):
        result = method()
        #save_result
        return result

class Wheels:
    def add(self, value):
        #add element
        pass


class Motor:
    def add(self, value):
        # add element
        pass

Я пытаюсь сделать так, чтобы при вызове метода add у wheels и motor вызывался метод add_element у класса Car. Пример:

my_car = Car()
# должен вызваться метод класса Motor, а результат передаться в my_car.add_element
my_car.motor.add("my_motor") 
# должен вызваться метод класса Wheels, а результат передаться в my_car.add_element
my_car.wheels.add("my_wheels")

Я совсем запутался, в голову пришел вот такой вариант:

class Car:

    def __init__(self):
        self.wheels = Wheels()
        self.wheels.add = self.add_element(self.wheels.add)
        self.motor = Motor()
        self.motor.add = self.add_element(self.motor.add)

    def add_element(self, method):
        def wrapper(*args, **kwargs):
            result = method(*args, **kwargs)
            # save_result
            return result
        return wrapper

Но если таких свойств у класса Car будет много, то получится очень много лишнего кода. Может у кого-нибудь есть хороший вариант решения данной задачи. Идея в том, чтобы объект класса Car узнавал об изменении мотора или колес. Я начинающий программист, так что скорее всего задача выглядит чуть-чуть безумной.


Ответы (0 шт):