Изменить поведение метода класса являющегося свойством друго класса
Есть вот такая схема. Класс 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 узнавал об изменении мотора или колес. Я начинающий программист, так что скорее всего задача выглядит чуть-чуть безумной.