> For the complete documentation index, see [llms.txt](https://igor-19.gitbook.io/qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://igor-19.gitbook.io/qa/avtomatizaciya-testirovaniya/python/oop-v-python-vo-vsekh-podrobnostyakh/nasledovanie-vs-kompoziciya.md).

# Наследование vs Композиция

Наследование лучше всего использовать для моделирования отношений, тогда как для составных моделей лучше использовать композицию.

* **Используйте наследование вместо композиции** для моделирования четких отношений. Во-первых, обоснуйте связь между производным классом и его базой. Затем измените отношения и попытайтесь их оправдать. Если вы можете оправдать отношения в обоих направлениях, то вам не следует использовать наследство между ними.
* **Используйте наследование вместо композиции**, чтобы использовать как интерфейс, так и реализацию базового класса.
* **Используйте наследование вместо композиции** для предоставления функций смешивания (**mixin**) нескольким несвязанным классам, когда может существовать только одна реализация этой функции.
* **Использование композиции вместо наследования** для моделирования имеет отношение, которое использует реализацию класса компонента.
* **Используйте композицию вместо наследования** для создания компонентов, которые могут повторно использоваться несколькими классами в ваших приложениях.
* **Используйте композицию вместо наследования** для реализации групп поведений и политик, которые можно применять взаимозаменяемо к другим классам для настройки их поведения.
* **Используйте композицию вместо наследования**, чтобы включить изменения поведения во время выполнения, не затрагивая существующие классы.

<br>
