You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Инкапсуляция** (Encapsulation) — это принцип ООП, заключающийся в упаковке данных и методов для работы с ними внутри единого объекта с ограничением прямого доступа к его состоянию. Принцип **Чёрного ящика**.
4
+
5
+
## Для чего?
6
+
<spanclass="badge">Инкапсуляция</span> создаёт границы вокруг объекта. Она скрывает внутреннее устройство и позволяет объекту самому контролировать допустимые изменения своего состояния.
7
+
8
+
Во внешнем коде важно **что** делает объект, а не **как именно** он это делает.
9
+
10
+
## Принцип чёрного ящика
11
+
12
+
Инкапсуляцию превращает объект в <spanclass="badge">Black Box</span> (чёрный ящик), защищая его внутренности:
13
+
14
+
- Скрытие реализации — извне доступен только публичный интерфейс объекта.
15
+
- Контроль состояния — объект сам валидирует данные, прежде чем изменить свои атрибуты.
16
+
- Независимость кода — внутреннюю логику можно переписать, не меняя код, который использует этот класс.
17
+
18
+
Извне взаимодейстие с объектом происходит через инструменты управления, не видя его внутреннего устройства.
19
+
20
+
## Инкапсуляция в Python
21
+
22
+
В отличие от языков с жёстким доступом, Python использует систему соглашений и декораторы:
23
+
24
+
- <spanclass="badge">_protected</span> — соглашение «только для внутреннего пользования», доступ сохраняется.
25
+
- <spanclass="badge">__private</span> — механизм искажения имен (Name Mangling) для защиты от случайной перезаписи.
26
+
- <spanclass="badge">@property</span> — способ превратить методы в атрибуты, добавляя логику доступа без изменения интерфейса.
**Наследование** (Inheritance) — это принцип ООП, позволяющий создать новый класс на основе уже существующего. Дочерний класс заимствует атрибуты и методы родительского, дополняя или переопределяя их.
5
+
6
+
## Для чего?
7
+
8
+
<spanclass="badge">Наследование</span> систематизирует код, позволяя выстраивать иерархии от общих понятий к более узким. Оно избавляет от ручного копирования функций, формируя базовую логику в одном месте для всех "потомков".
9
+
10
+
Этот механизм закрепляет принцип <spanclass="badge">is-a</span> («является»), при котором любой подкласс по умолчанию считается полноценным представителем своего родительского типа.
11
+
12
+
## Механизмы наследования
13
+
14
+
Наследование делает классы гибкими и расширяемыми:
15
+
16
+
- <spanclass="badge">Переиспользование кода</span> — базовый функционал пишется один раз в родительском классе.
17
+
- <spanclass="badge">Расширение (Extending)</span> — дочерний класс добавляет свои уникальные методы и данные.
18
+
- <spanclass="badge">Переопределение (Overriding)</span> — дочерний класс может изменить поведение метода родителя.
19
+
20
+
С помощью функции super() дочерний класс может вызвать оригинальную версию метода из родительского класса.
21
+
22
+
В Python поддерживается как одиночное, так и множественное наследование:
23
+
24
+
- <spanclass="badge">Single Inheritance</span> — классическое наследование от одного предка.
25
+
- <spanclass="badge">Multiple Inheritance</span> — возможность наследоваться от нескольких классов сразу.
26
+
- <spanclass="badge">MRO</span> — Method Resolution Order, порядок, в котором Python ищет методы в иерархии предков.
0 commit comments