Встречается на собеседованиях • сегодня

В чем разница между композицией и наследованным в Python

Композиция и наследование — два разных подхода к организации кода.

Наследование создает отношение "является" (is-a). Дочерний класс наследует все методы и атрибуты родительского:

python
class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

Композиция создает отношение "имеет" (has-a). Класс содержит экземпляр другого класса как атрибут:

python
class Engine:
    def start(self):
        return "Engine started"

class Car:
    def __init__(self):
        self.engine = Engine()
    
    def start(self):
        return self.engine.start()

Ключевые различия:

  • Наследование жестко связывает классы, композиция дает больше гибкости
  • При изменении родительского класса могут сломаться все дочерние
  • Композиция лучше подходит для случаев, когда поведение может меняться динамически

В Python предпочтительнее использовать композицию там, где это возможно, следуя принципу "композиция предпочтительнее наследования".

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы