2 added
2 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Термины и определения</a></li>
1
<ul><li><a>Термины и определения</a></li>
2
<li><a>Конструктор класса</a><ul><li><a>Метод init</a><ul><li><a>Синтаксис</a></li>
2
<li><a>Конструктор класса</a><ul><li><a>Метод init</a><ul><li><a>Синтаксис</a></li>
3
<li><a>Наглядные примеры</a><ul><li><a>Без конструктора</a></li>
3
<li><a>Наглядные примеры</a><ul><li><a>Без конструктора</a></li>
4
<li><a>Элементарный конструктор - без аргументов</a></li>
4
<li><a>Элементарный конструктор - без аргументов</a></li>
5
<li><a>С аргументами</a></li>
5
<li><a>С аргументами</a></li>
6
<li><a>Наследование</a></li>
6
<li><a>Наследование</a></li>
7
<li><a>Прочие особенности</a></li>
7
<li><a>Прочие особенности</a></li>
8
</ul></li>
8
</ul></li>
9
</ul></li>
9
</ul></li>
10
<li><a>Метод new</a></li>
10
<li><a>Метод new</a></li>
11
</ul></li>
11
</ul></li>
12
<li><a>Совместное использование конструкторов</a><ul><li><a>Особенности взаимодействия</a></li>
12
<li><a>Совместное использование конструкторов</a><ul><li><a>Особенности взаимодействия</a></li>
13
<li><a>Переопределение __new__</a></li>
13
<li><a>Переопределение __new__</a></li>
14
</ul></li>
14
</ul></li>
15
</ul><p>Python - популярный и функциональный язык программирования. С его помощью разработчики могут создавать разнообразные приложения. Python пользуется спросом не только у новичков. Опытные программисты часто задействуют его в качестве вспомогательного инструмента разработки сложных программных продуктов. </p>
15
</ul><p>Python - популярный и функциональный язык программирования. С его помощью разработчики могут создавать разнообразные приложения. Python пользуется спросом не только у новичков. Опытные программисты часто задействуют его в качестве вспомогательного инструмента разработки сложных программных продуктов. </p>
16
-
<p>Питон поддерживает множество модулей, функций, а также фреймворков и библиотек. У него имеется ряд встроенных возможностей, позволяющих оперировать классами и объектами. Далее предстоит изучить конструкторы, а также метод __init__. Соответствующие компоненты выступают в качестве важных аспектов создания программ с использованием объектно-ориентированного программирования.</p>
16
+
<p>Питон поддерживает множество модулей, функций, а также фреймворков и библиотек. У него имеется ряд встроенных возможностей, позволяющих оперировать классами и объектами. Далее предстоит изучить конструкторы, а также метод __init__. Соответствующие компоненты выступают в качестве важных аспектов создания програ��м с использованием объектно-ориентированного программирования.</p>
17
<h2>Термины и определения</h2>
17
<h2>Термины и определения</h2>
18
<p>Перед изучением конструкторов класса и __init__ в Питоне, разработчик должен запомнить несколько ключевых определений. Соответствующая терминология пригодится каждому, кто планирует заниматься программированием на объектно-ориентированных языках.</p>
18
<p>Перед изучением конструкторов класса и __init__ в Питоне, разработчик должен запомнить несколько ключевых определений. Соответствующая терминология пригодится каждому, кто планирует заниматься программированием на объектно-ориентированных языках.</p>
19
<p>Запомнить рекомендуется следующие понятия:</p>
19
<p>Запомнить рекомендуется следующие понятия:</p>
20
<ol><li>Алгоритмы - наборы инструкций, обрабатываемых программным обеспечением. Они направлены на решение поставленных перед разработчиком задач.</li>
20
<ol><li>Алгоритмы - наборы инструкций, обрабатываемых программным обеспечением. Они направлены на решение поставленных перед разработчиком задач.</li>
21
<li>API - правила, процедуры и протоколы, помогающие создавать различные программные приложения.</li>
21
<li>API - правила, процедуры и протоколы, помогающие создавать различные программные приложения.</li>
22
<li>Аргументы - значения, передаваемые в функции или имеющиеся в исходном коде команды.</li>
22
<li>Аргументы - значения, передаваемые в функции или имеющиеся в исходном коде команды.</li>
23
<li>Символ - единица отображения данных в программе. Выражается она одной буквой или символьной записью.</li>
23
<li>Символ - единица отображения данных в программе. Выражается она одной буквой или символьной записью.</li>
24
<li>Тип данных - классификация данных схожих типов.</li>
24
<li>Тип данных - классификация данных схожих типов.</li>
25
<li>Объекты - комбинации связанных переменных, констант и иные структур информации, способные выбираться и обрабатываться совместно.</li>
25
<li>Объекты - комбинации связанных переменных, констант и иные структур информации, способные выбираться и обрабатываться совместно.</li>
26
<li>Класс - набор связанных объектов, наделенных общими свойствами.</li>
26
<li>Класс - набор связанных объектов, наделенных общими свойствами.</li>
27
<li>Константы - значения в приложении, которые всегда остаются неизменными. Они сохраняют свои первоначальные "параметры" на постоянной основе.</li>
27
<li>Константы - значения в приложении, которые всегда остаются неизменными. Они сохраняют свои первоначальные "параметры" на постоянной основе.</li>
28
<li>Массивы - списки/группы схожих типов значений данных, подлежащие обязательной предварительной группировке. Все значения в массиве имеют один и тот же тип данных. Отличаются они по непосредственному положению в пределах заданного "множества".</li>
28
<li>Массивы - списки/группы схожих типов значений данных, подлежащие обязательной предварительной группировке. Все значения в массиве имеют один и тот же тип данных. Отличаются они по непосредственному положению в пределах заданного "множества".</li>
29
<li>Цикл (или петля) - повторяющийся фрагмент кода. Цикл работает до тех пор, пока система не достигнет определенного условия (оно задается разработчиком заблаговременно). Также прекратить функционирование петли удается за счет специальной команды остановки.</li>
29
<li>Цикл (или петля) - повторяющийся фрагмент кода. Цикл работает до тех пор, пока система не достигнет определенного условия (оно задается разработчиком заблаговременно). Также прекратить функционирование петли удается за счет специальной команды остановки.</li>
30
<li>Бесконечный цикл - постоянно повторяющийся фрагмент кода. В основном соответствующее явление рассматривается в качестве ошибки. Оно может быть спровоцировано неправильным использованием функций, методов и иных инструментов программирования, а также нарушением общей логики.</li>
30
<li>Бесконечный цикл - постоянно повторяющийся фрагмент кода. В основном соответствующее явление рассматривается в качестве ошибки. Оно может быть спровоцировано неправильным использованием функций, методов и иных инструментов программирования, а также нарушением общей логики.</li>
31
<li>Итерация - один проход программы через заданный набор операций.</li>
31
<li>Итерация - один проход программы через заданный набор операций.</li>
32
<li>Ключевое слово - слово, которое было зарезервировано синтаксисом языка. Оно используется для реализации действий, команд, функций и инструментов. Ключевые слова не могут применяться разработчиком при присваивании имен классам/переменным.</li>
32
<li>Ключевое слово - слово, которое было зарезервировано синтаксисом языка. Оно используется для реализации действий, команд, функций и инструментов. Ключевые слова не могут применяться разработчиком при присваивании имен классам/переменным.</li>
33
<li>Операнд - объект, которым разрешено манипулировать через поддерживаемые языком операторы.</li>
33
<li>Операнд - объект, которым разрешено манипулировать через поддерживаемые языком операторы.</li>
34
<li>Оператор - объект, умеющий управлять операндами.</li>
34
<li>Оператор - объект, умеющий управлять операндами.</li>
35
<li>Переменная - место хранения данных приложения. Именованная ячейка памяти, выделенная системой для работы с информацией в процессе функционирования программного обеспечения.</li>
35
<li>Переменная - место хранения данных приложения. Именованная ячейка памяти, выделенная системой для работы с информацией в процессе функционирования программного обеспечения.</li>
36
<li>Указатель - переменная, включающая в себя адрес места в памяти.</li>
36
<li>Указатель - переменная, включающая в себя адрес места в памяти.</li>
37
</ol><p>Все это - начальная "база", помогающая работать с объектно-ориентированным программированием. Дополнительно разработчикам рекомендуется запомнить, что означает термин "синтаксис". Таким словом характеризуют правила и принципы, необходимые для передачи операторов.</p>
37
</ol><p>Все это - начальная "база", помогающая работать с объектно-ориентированным программированием. Дополнительно разработчикам рекомендуется запомнить, что означает термин "синтаксис". Таким словом характеризуют правила и принципы, необходимые для передачи операторов.</p>
38
<h2>Конструктор класса</h2>
38
<h2>Конструктор класса</h2>
39
<p>В объектно-ориентированном программировании разработчикам приходится сталкиваться с такими компонентами как "конструктор" и "деструктор". Начать их изучение рекомендуется с первого упомянутого элемента.</p>
39
<p>В объектно-ориентированном программировании разработчикам приходится сталкиваться с такими компонентами как "конструктор" и "деструктор". Начать их изучение рекомендуется с первого упомянутого элемента.</p>
40
<p>Конструктор - это метод, который будет автоматически вызываться системой при создании объектов. Он также называется конструктором объектов класса. Имя соответствующего метода будет регламентироваться синтаксисом определенного языка разработки. Пример - в Java имя конструктора класса полностью совпадает с именем самого создаваемого класса. В Python для соответствующих целей используются 2 специальные конструкции, о которых будет более подробно рассказано далее.</p>
40
<p>Конструктор - это метод, который будет автоматически вызываться системой при создании объектов. Он также называется конструктором объектов класса. Имя соответствующего метода будет регламентироваться синтаксисом определенного языка разработки. Пример - в Java имя конструктора класса полностью совпадает с именем самого создаваемого класса. В Python для соответствующих целей используются 2 специальные конструкции, о которых будет более подробно рассказано далее.</p>
41
<p>Основной задачей конструктора класса в Python является инициализация экземпляра класса. С его помощью удается определить, как именно создаются объекты в исходном коде проекта.</p>
41
<p>Основной задачей конструктора класса в Python является инициализация экземпляра класса. С его помощью удается определить, как именно создаются объекты в исходном коде проекта.</p>
42
<h3>Метод init</h3>
42
<h3>Метод init</h3>
43
<p>__Init__ - это подсистема инициализации в Unix. Она отвечает за запуск всех остальных процессов. Если рассматривать соответствий компонент непосредственно в Python, можно назвать его инициализатором.</p>
43
<p>__Init__ - это подсистема инициализации в Unix. Она отвечает за запуск всех остальных процессов. Если рассматривать соответствий компонент непосредственно в Python, можно назвать его инициализатором.</p>
44
<p>__init__ - конструктор класса. Подчеркивания между ключевым словом всегда указывают на то, что задействованный элемент относится к группе методов перегрузки операторов. Если соответствующие методы определяются в классе, их объекты смогут участвовать в сложении и вычитании, вызываться под видом функций и так далее.</p>
44
<p>__init__ - конструктор класса. Подчеркивания между ключевым словом всегда указывают на то, что задействованный элемент относится к группе методов перегрузки операторов. Если соответствующие методы определяются в классе, их объекты смогут участвовать в сложении и вычитании, вызываться под видом функций и так далее.</p>
45
<p>Упомянутый метод будет вызываться тогда, когда объект создается из класса. С его помощью класс сможет инициализировать атрибуты.</p>
45
<p>Упомянутый метод будет вызываться тогда, когда объект создается из класса. С его помощью класс сможет инициализировать атрибуты.</p>
46
<h4><em>Синтаксис</em></h4>
46
<h4><em>Синтаксис</em></h4>
47
<p>Изучая __init__ и другие конструкции, необходимо грамотно внедрять их в программный код. Для рассматриваемого инициализатора рекомендуется использовать следующую синтаксическую форму записи:</p>
47
<p>Изучая __init__ и другие конструкции, необходимо грамотно внедрять их в программный код. Для рассматриваемого инициализатора рекомендуется использовать следующую синтаксическую форму записи:</p>
48
<p>Здесь:</p>
48
<p>Здесь:</p>
49
<ol><li>Def - это ключевое слово. Оно используется для определения, потому что работать предстоит с функцией.</li>
49
<ol><li>Def - это ключевое слово. Оно используется для определения, потому что работать предстоит с функцией.</li>
50
-
<li>Первый аргумент имеет прямое отношение к теку��ему объекту. Он будет связывать экземпляр с методом init().</li>
50
+
<li>Первый аргумент имеет прямое отношение к текущему объекту. Он будет связывать экземпляр с методом init().</li>
51
<li>Аргументы метода init() не являются обязательными при разработке программного обеспечения. Конструктор может быть определен программистом с любым количеством "параметров".</li>
51
<li>Аргументы метода init() не являются обязательными при разработке программного обеспечения. Конструктор может быть определен программистом с любым количеством "параметров".</li>
52
</ol><p>Чтобы лучше понять принцип работы def __init__, рекомендуется изучить метод на наглядных примерах. Вот - один из них:</p>
52
</ol><p>Чтобы лучше понять принцип работы def __init__, рекомендуется изучить метод на наглядных примерах. Вот - один из них:</p>
53
<p>Соответствующий фрагмент кода создает класс с именем Car. Он будет отвечать за параметры, характерные автомобилям. Примеры - цвет, модель, скорость и так далее. Соответствующий класс включает в себя методы "старт", "ускорение", "переключение передачи". В приведенном примере метод __init__ использовался для инициализации атрибутов класса.</p>
53
<p>Соответствующий фрагмент кода создает класс с именем Car. Он будет отвечать за параметры, характерные автомобилям. Примеры - цвет, модель, скорость и так далее. Соответствующий класс включает в себя методы "старт", "ускорение", "переключение передачи". В приведенном примере метод __init__ использовался для инициализации атрибутов класса.</p>
54
<h4><em>Наглядные примеры</em></h4>
54
<h4><em>Наглядные примеры</em></h4>
55
<p>Чтобы лучше понимать, как работает функция def __init__, далее предстоит ознакомиться с несколькими наглядными примерами создания классов в Python. Предложенные варианты - это самые разные сценарии. Они наглядно объяснят разницу между классами с конструкторами и без них.</p>
55
<p>Чтобы лучше понимать, как работает функция def __init__, далее предстоит ознакомиться с несколькими наглядными примерами создания классов в Python. Предложенные варианты - это самые разные сценарии. Они наглядно объяснят разницу между классами с конструкторами и без них.</p>
56
<h5>Без конструктора</h5>
56
<h5>Без конструктора</h5>
57
<p>В Python допускается создание класса, исключая непосредственное определение конструктора. В этом случае требуется обратиться к конструктору суперкласса для инициализации классового экземпляра. Класс object является основой для всех остальных классов в рассматриваемом языке программирования.</p>
57
<p>В Python допускается создание класса, исключая непосредственное определение конструктора. В этом случае требуется обратиться к конструктору суперкласса для инициализации классового экземпляра. Класс object является основой для всех остальных классов в рассматриваемом языке программирования.</p>
58
<p>А вот - еще один вариант кода, указывающий на то, что конструктор суперкласса вызывается для инициализации экземпляра подкласса:</p>
58
<p>А вот - еще один вариант кода, указывающий на то, что конструктор суперкласса вызывается для инициализации экземпляра подкласса:</p>
59
<p>Выше - результат обработки рассматриваемого кодового фрагмента.</p>
59
<p>Выше - результат обработки рассматриваемого кодового фрагмента.</p>
60
<h5>Элементарный конструктор - без аргументов</h5>
60
<h5>Элементарный конструктор - без аргументов</h5>
61
<p>Что значит def __init__, уже понятно. Теперь предстоит рассмотреть базовые основы работы с конструкторами классов в Python. Упомянутый язык программирования поддерживает создание инициализатора без аргументов:</p>
61
<p>Что значит def __init__, уже понятно. Теперь предстоит рассмотреть базовые основы работы с конструкторами классов в Python. Упомянутый язык программирования поддерживает создание инициализатора без аргументов:</p>
62
<p>Соответствующий прием может оказаться весьма полезным в отдельных ситуациях. Пример - ведение журнала с подсчетом классовых экземпляров.</p>
62
<p>Соответствующий прием может оказаться весьма полезным в отдельных ситуациях. Пример - ведение журнала с подсчетом классовых экземпляров.</p>
63
<h5>С аргументами</h5>
63
<h5>С аргументами</h5>
64
<p>При разработке программного обеспечения программисты в основном сталкиваются с функциями-конструкторами, поддерживающими те или иные аргументы. Они могут быть задействованы для инициализации переменных экземпляра:</p>
64
<p>При разработке программного обеспечения программисты в основном сталкиваются с функциями-конструкторами, поддерживающими те или иные аргументы. Они могут быть задействованы для инициализации переменных экземпляра:</p>
65
<p>Выше - не только фрагмент кода, демонстрирующего конструктор с аргументами, но и результат, выводимый в консоль при обработке приложения.</p>
65
<p>Выше - не только фрагмент кода, демонстрирующего конструктор с аргументами, но и результат, выводимый в консоль при обработке приложения.</p>
66
<h5>Наследование</h5>
66
<h5>Наследование</h5>
67
<p>Когда у разработчика имеется класс, наследуемый от суперкласса, метод __init__ будет вести себя точно таким же образом. Вот - пример попытки инициализации в программе дочернего класса:</p>
67
<p>Когда у разработчика имеется класс, наследуемый от суперкласса, метод __init__ будет вести себя точно таким же образом. Вот - пример попытки инициализации в программе дочернего класса:</p>
68
<p>Здесь после инициализации объекта Student будет выведен такой результат:</p>
68
<p>Здесь после инициализации объекта Student будет выведен такой результат:</p>
69
<p>Перед дочерним классом вызывался родительский класс init. Соответствующий момент можно контролировать. Для этого достаточно корректировать порядок, в котором init вызывается для родительского/дочернего класса в Python.</p>
69
<p>Перед дочерним классом вызывался родительский класс init. Соответствующий момент можно контролировать. Для этого достаточно корректировать порядок, в котором init вызывается для родительского/дочернего класса в Python.</p>
70
<h5>Прочие особенности</h5>
70
<h5>Прочие особенности</h5>
71
<p>Стоит обратить внимание на то, что в Питоне отсутствует поддержка сразу нескольких конструкторов, в отличие от основной массы известных объектно-ориентированных языков разработки. Примером может послужить Java. </p>
71
<p>Стоит обратить внимание на то, что в Питоне отсутствует поддержка сразу нескольких конструкторов, в отличие от основной массы известных объектно-ориентированных языков разработки. Примером может послужить Java. </p>
72
<p>Система Python допускает определение нескольких методов __init__, но последний из них обеспечит переопределение предыдущих определений.</p>
72
<p>Система Python допускает определение нескольких методов __init__, но последний из них обеспечит переопределение предыдущих определений.</p>
73
<p>Разработчик должен помнить, что __init__ ничего не возвращает. Если попытаться вернуть значение, отличное от None, система вызовет ошибку TypeError.</p>
73
<p>Разработчик должен помнить, что __init__ ничего не возвращает. Если попытаться вернуть значение, отличное от None, система вызовет ошибку TypeError.</p>
74
<h3>Метод new</h3>
74
<h3>Метод new</h3>
75
<p>Что значит __init__, понятно. В рассматриваемом языке разработки поддерживается еще один конструктор. Он называется __new. Предусматривает такие особенности:</p>
75
<p>Что значит __init__, понятно. В рассматриваемом языке разработки поддерживается еще один конструктор. Он называется __new. Предусматривает такие особенности:</p>
76
<ul><li>является истинным конструктором Python;</li>
76
<ul><li>является истинным конструктором Python;</li>
77
<li>вызывается до __init__;</li>
77
<li>вызывается до __init__;</li>
78
<li>отвечает за создание и возврат нового объекта имеющегося программного кода;</li>
78
<li>отвечает за создание и возврат нового объекта имеющегося программного кода;</li>
79
<li>по умолчанию создает экземпляр класса и возвращает его, но переопределить соответствующий компонент для более сложного поведения не получится.</li>
79
<li>по умолчанию создает экземпляр класса и возвращает его, но переопределить соответствующий компонент для более сложного поведения не получится.</li>
80
</ul><p>Вот - наглядный пример использования __new__:</p>
80
</ul><p>Вот - наглядный пример использования __new__:</p>
81
<p>__new__ может быть задействован для реализации паттернов проектирования - factory или singleton. В приведенном выше фрагменте метод __new__ будет проверять, есть ли экземпляр Singleton или нет. Далее осуществляется вызов super().__new__(cls). С помощью этой функции система создаст новый экземпляр. Если соответствующий элемент уже присутствует, __new__ вернет его. Подобный прием гарантирует наличие одного единственного экземпляра Singleton.</p>
81
<p>__new__ может быть задействован для реализации паттернов проектирования - factory или singleton. В приведенном выше фрагменте метод __new__ будет проверять, есть ли экземпляр Singleton или нет. Далее осуществляется вызов super().__new__(cls). С помощью этой функции система создаст новый экземпляр. Если соответствующий элемент уже присутствует, __new__ вернет его. Подобный прием гарантирует наличие одного единственного экземпляра Singleton.</p>
82
<h2>Совместное использование конструкторов</h2>
82
<h2>Совместное использование конструкторов</h2>
83
<p>__new__ отвечает за непосредственное создание объекта, а __init__ - за его инициализацию. Разработчики иногда используют соответствующие методы совместно. Прием полезен, если имеющиеся объекты требуют сложной инициализации.</p>
83
<p>__new__ отвечает за непосредственное создание объекта, а __init__ - за его инициализацию. Разработчики иногда используют соответствующие методы совместно. Прием полезен, если имеющиеся объекты требуют сложной инициализации.</p>
84
<p>В соответствующем кодовом фрагменте метод __new__ выведет в консоль сообщение о создании объекта. __init__ используется для вывода текста об инициализации. Далее соответствующий конструктор установит атрибут value.</p>
84
<p>В соответствующем кодовом фрагменте метод __new__ выведет в консоль сообщение о создании объекта. __init__ используется для вывода текста об инициализации. Далее соответствующий конструктор установит атрибут value.</p>
85
<h3>Особенности взаимодействия</h3>
85
<h3>Особенности взаимодействия</h3>
86
<p>Создание объекта класса в Python включает в себя два отдельных этапа:</p>
86
<p>Создание объекта класса в Python включает в себя два отдельных этапа:</p>
87
<ol><li>Непосредственное формирование объекта. На соответствующем шаге Python вызывает специальный метод __new__, отвечающий за создание новых элементов. Соответствующая "функция" является единственной умеющей возвращать новый объект класса.</li>
87
<ol><li>Непосредственное формирование объекта. На соответствующем шаге Python вызывает специальный метод __new__, отвечающий за создание новых элементов. Соответствующая "функция" является единственной умеющей возвращать новый объект класса.</li>
88
<li>Инициализация. За нее отвечает __init__. Данный метод в Python ничего не возвращает. Он устанавливает значения атрибутов задействованного объекта.</li>
88
<li>Инициализация. За нее отвечает __init__. Данный метод в Python ничего не возвращает. Он устанавливает значения атрибутов задействованного объекта.</li>
89
</ol><p>Если рассматриваемые методы определены, __init__ и __new__ будут автоматически вызваны Python при создании нового классового объекта.</p>
89
</ol><p>Если рассматриваемые методы определены, __init__ и __new__ будут автоматически вызваны Python при создании нового классового объекта.</p>
90
<h3>Переопределение __new__</h3>
90
<h3>Переопределение __new__</h3>
91
<p>Что значит def __init__ в Питоне, понятно. Как работает __new__ - тоже. В большинстве случаев второй метод не требует переопределения. Связано это с тем, что дефолтная реализация уже все организовала - она отвечает за создание и возврат нового экземпляра объекта.</p>
91
<p>Что значит def __init__ в Питоне, понятно. Как работает __new__ - тоже. В большинстве случаев второй метод не требует переопределения. Связано это с тем, что дефолтная реализация уже все организовала - она отвечает за создание и возврат нового экземпляра объекта.</p>
92
<p>Переопределение__new__ может потребоваться, если программист хочет изменить принцип создания объекта. Этот прием также актуален для некоторых паттернов проектирования:</p>
92
<p>Переопределение__new__ может потребоваться, если программист хочет изменить принцип создания объекта. Этот прием также актуален для некоторых паттернов проектирования:</p>
93
<p>Здесь:</p>
93
<p>Здесь:</p>
94
<ol><li>__new__ проверяет пул экземпляров.</li>
94
<ol><li>__new__ проверяет пул экземпляров.</li>
95
<li>Если пул не является пустым, система использует существующий экземпляр их пула.</li>
95
<li>Если пул не является пустым, система использует существующий экземпляр их пула.</li>
96
<li>В противном случае создается новый экземпляр.</li>
96
<li>В противном случае создается новый экземпляр.</li>
97
</ol><p>Прием может быть особо полезным тогда, когда создание нового объекта - это затратная в плане распределения ресурсов и времени операция.</p>
97
</ol><p>Прием может быть особо полезным тогда, когда создание нового объекта - это затратная в плане распределения ресурсов и времени операция.</p>
98
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
98
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
99
99