|
1 | | -Определение |
| 1 | +## Определение |
2 | 2 |
|
3 | 3 | !!! info "" |
4 | 4 | **Наследование** (Inheritance) — это принцип ООП, позволяющий создать новый класс на основе уже существующего. Дочерний класс заимствует атрибуты и методы родительского, дополняя или переопределяя их. |
|
13 | 13 |
|
14 | 14 | Наследование делает классы гибкими и расширяемыми: |
15 | 15 |
|
16 | | -- <span class="badge">Переиспользование кода</span> — базовый функционал пишется один раз в родительском классе. |
17 | | -- <span class="badge">Расширение (Extending)</span> — дочерний класс добавляет свои уникальные методы и данные. |
18 | | -- <span class="badge">Переопределение (Overriding)</span> — дочерний класс может изменить поведение метода родителя. |
| 16 | +- <span class="badge">Reuse</span> (переиспользование кода) — базовый функционал пишется один раз в родительском классе. |
| 17 | +- <span class="badge">Extending</span> (расширение) — дочерний класс добавляет свои уникальные методы и данные. |
| 18 | +- <span class="badge">Overriding</span> (переопределение) — дочерний класс может изменить поведение метода родителя. |
19 | 19 |
|
20 | 20 | С помощью функции super() дочерний класс может вызвать оригинальную версию метода из родительского класса. |
21 | 21 |
|
|
25 | 25 | - <span class="badge">Multiple Inheritance</span> — возможность наследоваться от нескольких классов сразу. |
26 | 26 | - <span class="badge">MRO</span> — Method Resolution Order, порядок, в котором Python ищет методы в иерархии предков. |
27 | 27 |
|
28 | | -| Понятие | Суть | Инструмент | |
29 | | -| -------- | ------------------------------------------------- | ------------------------| |
30 | | -| Parent | Базовый класс (суперкласс), от которого наследуют | BaseClass | |
31 | | -| Child | Производный класс (подкласс), который наследует | class Child(BaseClass): | |
32 | | -| super() | Прокси-объект для доступа к методам родителя | super().method() | |
| 28 | +| Понятие | Суть | Инструмент | |
| 29 | +| -------- | ------------------------------------------------- | --------------------------------------------------- | |
| 30 | +| Parent | Базовый класс (суперкласс), от которого наследуют | <span class="badge">BaseClass</span> | |
| 31 | +| Child | Производный класс (подкласс), который наследует | <span class="badge">class Child(BaseClass):</span> | |
| 32 | +| super() | Прокси-объект для доступа к методам родителя | <span class="badge">super().method()</span> | |
| 33 | + |
| 34 | +<span class="badge">super()</span> позволяет сначала выполнить стандартные действия предка, а потом добавить свои уникальные, подобно [декоратору](./encapsulation.md){:.link-accent}, но внутри, а не снаружи. |
33 | 35 |
|
34 | | -Посмотреть порядок поиска методов в сложном дереве наследования можно через атрибут ClassName.__mro__. |
35 | 36 | ## Пример |
36 | 37 |
|
37 | 38 | ``` python |
|
0 commit comments