Skip to content

Commit a3d90df

Browse files
committed
feat: add init page
1 parent 5135a6c commit a3d90df

4 files changed

Lines changed: 59 additions & 16 deletions

File tree

docs/python/dunder_method.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
coming soon...

docs/python/encapsulation.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
- <span class="badge">__private</span> — механизм искажения имен (Name Mangling) для защиты от случайной перезаписи.
2626
- <span class="badge">@property</span> — способ превратить методы в атрибуты, добавляя логику доступа без изменения интерфейса.
2727

28-
| Формат | Название | Суть | Доступ снаружи
29-
| ------------- | ----------------------- | ------------------------ | -------------------------
30-
| `name` | Публичный | Обычный атрибут | Разрешён
31-
| `_protected` | Защищённый (Protected) | Соглашение "не трогать" | Можно, но не рекомендуется
32-
| `__private` | Приватный (Private) | Name Mangling | Только через <span class="badge">_Class__name</span>
28+
| Формат | Название | Суть | Доступ снаружи
29+
| -------------------------------------- | ----------------------- | ------------------------ | -------------------------
30+
| <span class="badge">name</span> | Публичный | Обычный атрибут | Разрешён
31+
| <span class="badge">_protected</span> | Защищённый (Protected) | Соглашение "не трогать" | Можно, но не рекомендуется
32+
| <span class="badge">__private</span> | Приватный (Private) | Name Mangling | Только через <span class="badge">_Class__name</span>
3333

34-
Через свойства `@property` можно выдавать «красивый» атрибут, пряча внутри проверки и логику.
34+
Через свойства <span class="badge">@property</span> можно выдавать «красивый» атрибут, пряча внутри проверки и логику.
3535

3636
## Пример
3737
```python

docs/python/inheritance.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Определение
1+
## Определение
22

33
!!! info ""
44
**Наследование** (Inheritance) — это принцип ООП, позволяющий создать новый класс на основе уже существующего. Дочерний класс заимствует атрибуты и методы родительского, дополняя или переопределяя их.
@@ -13,9 +13,9 @@
1313

1414
Наследование делает классы гибкими и расширяемыми:
1515

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> (переопределение) — дочерний класс может изменить поведение метода родителя.
1919

2020
С помощью функции super() дочерний класс может вызвать оригинальную версию метода из родительского класса.
2121

@@ -25,13 +25,14 @@
2525
- <span class="badge">Multiple Inheritance</span> — возможность наследоваться от нескольких классов сразу.
2626
- <span class="badge">MRO</span> — Method Resolution Order, порядок, в котором Python ищет методы в иерархии предков.
2727

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}, но внутри, а не снаружи.
3335

34-
Посмотреть порядок поиска методов в сложном дереве наследования можно через атрибут ClassName.__mro__.
3536
## Пример
3637

3738
``` python

docs/python/init.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Определение
2+
3+
!!! info ""
4+
`__init__` — магический метод, который инициализирует атрибуты для нового экземпляра класса.
5+
6+
## Зачем он нужен
7+
8+
Метод `__init__` автоматически вызывается при создании объекта и настраивает его начальное состояние: задаёт значения атрибутов, подготавливает данные для работы. Без него объект создаётся пустым.
9+
10+
## Как это работает
11+
12+
При <span class="badge">my_object = MyClass()</span>, Python сначала создаёт экземпляр класса <span class="badge">MyClass</span>, а затем автоматически вызывает метод `__init__`, передавая в него все аргументы, которые были указаны в скобках.
13+
Внутри `__init__` настраиваются атрибуты объекта — те данные, которые будут в нём хранится.​
14+
15+
Этот метод часто называют конструктором, хотя технически в Python он является именно инициализатором (созданием занимается метод `__new__`, но на практике его меняют редко).​​
16+
## Парамаметр self
17+
18+
Первый параметр `__init__` всегда называется <span class="badge">self</span> — это ссылка на сам создаваемый объект. Через <span class="badge">self</span> объекту присваиваеваются его значения:​​
19+
```python
20+
class Character:
21+
def __init__(self, name, level=1):
22+
# self.name — атрибут объекта
23+
# name — аргумент, переданный при создании
24+
self.name = name
25+
self.level = level
26+
self.inventory = [] # Начальное состояние может быть фиксированным
27+
28+
# Создание объекта (вызов __init__)
29+
hero = Character("Aragorn", 10)
30+
print(hero.name) # Aragorn
31+
```
32+
33+
## Главные особенности
34+
35+
- `__init__` не возвращает значение (технически возвращает None) — его задача только настроить объект.​
36+
- Два подчёркивания с обеих сторон `__init__` — это признак магического метода ([dunder method](./dunder_method.md){:.link-accent}), у которого есть специальное поведение в языке.
37+
- Наследование: Если создаётся дочерний класс и в нём описывается свой `__init__`, он «перекроет» родительский. Чтобы выполнить начальную настройку родителя, нужно использовать `super().__init__()`.​​
38+
39+
## Теги
40+
- [Object-Oriented Programming](./OOP.md){:.link-accent}
41+
- [Dunder method](./dunder_method.md){:.link-accent}

0 commit comments

Comments
 (0)