Вопрос проверяет знание основных подходов к повторному использованию кода в ООП.
Наследование — дочерний класс получает методы родителя.
Композиция — класс включает экземпляр другого класса как поле.
Миксины — классы-примеси для добавления функциональности.
Наследование
class Parent:
def method(self):
print("Родительский метод")
class Child(Parent):
pass
child = Child()
child.method() # "Родительский метод"Композиция
class Engine:
def start(self):
print("Двигатель запущен")
class Car:
def __init__(self):
self.engine = Engine()
def start(self):
self.engine.start()
car = Car()
car.start() # "Двигатель запущен"Миксины (множественное наследование)
class LogMixin:
def log(self, message):
print(f"Лог: {message}")
class MyClass(LogMixin):
def do_something(self):
self.log("Действие выполнено")
obj = MyClass()
obj.do_something() # "Лог: Действие выполнено"Вывод:
Наследование — для отношения "является" (например, Dog — это Animal).
Композиция — для отношения "имеет" (например, Car имеет Engine).