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

Что из себя представляет проблема: наследование vs композиция

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

Наследование создаёт жёсткую связь между классами (is-a отношение), что может привести к хрупкости кода:

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

class Car(Engine): # Плохо: машина НЕ является двигателем
pass

text

**Композиция** (has-a отношение) даёт больше гибкости:  
```python
class Car:
    def __init__(self):
        self.engine = Engine()  # Хорошо: машина содержит двигатель

    def start(self):
        self.engine.start()

Когда что использовать:

  • Наследование — когда дочерний класс действительно является специализацией родителя (например, Cat наследует Animal).
  • Композиция — когда нужно переиспользовать функциональность без жёсткой связи.

Композиция уменьшает coupling и упрощает тестирование.

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

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

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

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