Реализация на языке Python: различия между версиями

Материал из LERNADO: Информатика и техники
Новая страница: «<iframe key="lernbase" level="video" path="videos/embed/6aSyqLxBECi3Q8181jEJGb?muted=1&title=0" width="800" height="600" allowfullscreen="true" />»
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
<iframe key="lernbase" level="video" path="videos/embed/6aSyqLxBECi3Q8181jEJGb?muted=1&amp;title=0" width="800" height="600" allowfullscreen="true" />
<iframe key="lernbase" level="video" path="videos/embed/6aSyqLxBECi3Q8181jEJGb?muted=1&amp;title=0" width="800" height="600" allowfullscreen="true" />
== Краткое содержание лекции ==
=== Введение ===
*  Цель: Реализация класса в Python, аналогичного классу в C++, реализованному в [[Реализация на языке C++|предыдущей лекции]].
*  Основные элементы реализации:
**  Данные экземпляра.
**  Методы экземпляра.
**  Свойства экземпляра.
*  Жизненный цикл объекта: создание, инициализация, деинициализация, удаление.
=== Основы реализации класса в Python ===
*  Синтаксис: <code>class MyClass(object):</code>.
*  Особенность Python -- <code>object</code> в скобках.
*  В C++ экземпляры классов создаются с нуля, без общих черт. Разные классы не имеют ничего общего.
*  В Python 3 все классы имеют некоторые общие атрибуты, за которые и отвечает <code>object</code>.
*  Переменные в Python создаются динамически.
*  В функциях, реализующих методы:
**  Первый параметр -- <code>self</code> -- ссылка на экземпляр, с которым ведется работа.
**  Динамическая типизация: типы параметров не указываются.
=== Жизненный цикл объекта ===
*  Создание объекта:
**  Функция создания объекта <code>__new__</code> в Python реализуется при необходимости, что на практике делается редко.
**  <code>__new__</code> принимает ссылку на класс, а не на экземпляр.
*  Инициализация (Конструктор):
**  Определяется с помощью <code>__init__(self, ...)</code>.
**  <code>self</code> – ссылка на экземпляр.
**  Устанавливает начальные значения для переменных экземпляра.
*  Деинициализация (Деструктор):
**  Деструктор реализуется функцией <code>__del__</code>.
**  Деструктор может быть опущен, если он ничего не делает.
** Деструктор по умолчанию ничего не делает.
*  Копирование и присваивание:
*  Присваивание в Python – это всегда копирование ссылки.
*  <code>B = A</code> означает, что <code>B</code> – это ссылка на <code>A</code>, а не копия. <code>A</code> и <code>B</code> – две ссылки на один и тот же объект.
*  Операцию присваивания нельзя переопределить.
*  Нет необходимости в функции оператора присваивания.
=== Инкапсуляция ===
*  Состояние объекта (данные экземпляра) должно изменяться только через методы.
*  Вместо <code>private</code> (как в C++) используются двойные подчеркивания (<code>__</code>) перед именем переменной.
*  <code>__x</code> вместо <code>x</code> для закрытых переменных.
=== Свойства (Properties) ===
*  Простейший способ реализации свойства – использование декоратора <code>@property</code>.
*  Декоратор <code>@property</code> указывает, что функция реализует свойство, а не метод.
*  Свойство вызывается как атрибут, а не как метод (без скобок).
*  Свойства часто бывают доступны только для чтения.
*  Попытка присвоить значение свойству только для чтения вызовет ошибку.
*  Для создания свойства, которое можно изменять, используется декоратор <code>@property_name.setter</code>.
*  Присваивание значения свойству не гарантирует, что свойство действительно получит это значение.
=== Методы ===
*  Методы реализуются обычным способом, используя <code>self</code> для ссылки на экземпляр.
*  <code>self</code> – это экземпляр, указанный при вызове методаб ссылка на объект передается, как параметр <code>self</code>.
*  <code>a.dump()</code> вызывает метод, реализованный функцией <code>def dump(self):</code>, причем <code>a</code> становится <code>self</code>.
=== Заключение ===
*  Обзор основных аспектов реализации классов в Python.
*  Рассмотрены:
**  Реализация методов, данных и свойств.
**  Жизненный цикл объекта: конструктор (<code>__init__</code>), деструктор (<code>__del__</code>).
*  Дальнейшие темы: наследование, полиморфизм, мультиметоды и другие аспекты ООП в Python и C++.

Текущая версия от 11:36, 5 марта 2026

Краткое содержание лекции

Введение

  • Цель: Реализация класса в Python, аналогичного классу в C++, реализованному в предыдущей лекции.
  • Основные элементы реализации:
    • Данные экземпляра.
    • Методы экземпляра.
    • Свойства экземпляра.
  • Жизненный цикл объекта: создание, инициализация, деинициализация, удаление.

Основы реализации класса в Python

  • Синтаксис: class MyClass(object):.
  • Особенность Python -- object в скобках.
  • В C++ экземпляры классов создаются с нуля, без общих черт. Разные классы не имеют ничего общего.
  • В Python 3 все классы имеют некоторые общие атрибуты, за которые и отвечает object.
  • Переменные в Python создаются динамически.
  • В функциях, реализующих методы:
    • Первый параметр -- self -- ссылка на экземпляр, с которым ведется работа.
    • Динамическая типизация: типы параметров не указываются.

Жизненный цикл объекта

  • Создание объекта:
    • Функция создания объекта __new__ в Python реализуется при необходимости, что на практике делается редко.
    • __new__ принимает ссылку на класс, а не на экземпляр.
  • Инициализация (Конструктор):
    • Определяется с помощью __init__(self, ...).
    • self – ссылка на экземпляр.
    • Устанавливает начальные значения для переменных экземпляра.
  • Деинициализация (Деструктор):
    • Деструктор реализуется функцией __del__.
    • Деструктор может быть опущен, если он ничего не делает.
    • Деструктор по умолчанию ничего не делает.
  • Копирование и присваивание:
  • Присваивание в Python – это всегда копирование ссылки.
  • B = A означает, что B – это ссылка на A, а не копия. A и B – две ссылки на один и тот же объект.
  • Операцию присваивания нельзя переопределить.
  • Нет необходимости в функции оператора присваивания.

Инкапсуляция

  • Состояние объекта (данные экземпляра) должно изменяться только через методы.
  • Вместо private (как в C++) используются двойные подчеркивания (__) перед именем переменной.
  • __x вместо x для закрытых переменных.

Свойства (Properties)

  • Простейший способ реализации свойства – использование декоратора @property.
  • Декоратор @property указывает, что функция реализует свойство, а не метод.
  • Свойство вызывается как атрибут, а не как метод (без скобок).
  • Свойства часто бывают доступны только для чтения.
  • Попытка присвоить значение свойству только для чтения вызовет ошибку.
  • Для создания свойства, которое можно изменять, используется декоратор @property_name.setter.
  • Присваивание значения свойству не гарантирует, что свойство действительно получит это значение.

Методы

  • Методы реализуются обычным способом, используя self для ссылки на экземпляр.
  • self – это экземпляр, указанный при вызове методаб ссылка на объект передается, как параметр self.
  • a.dump() вызывает метод, реализованный функцией def dump(self):, причем a становится self.

Заключение

  • Обзор основных аспектов реализации классов в Python.
  • Рассмотрены:
    • Реализация методов, данных и свойств.
    • Жизненный цикл объекта: конструктор (__init__), деструктор (__del__).
  • Дальнейшие темы: наследование, полиморфизм, мультиметоды и другие аспекты ООП в Python и C++.