На Горох
Информатика, 11 класс

§ 48. Создание объектов в программе

"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 48. Создание объектов в программе

Кратко о теме

Объект — конкретная сущность, созданная в программе по описанию класса. Объекты помогают моделировать данные и действия: например, хранить имя ученика и его баллы, координаты точки или свойства книги. Вызов класса создаёт отдельный экземпляр, а метод __init__ задаёт ему начальные значения. Атрибуты экземпляра читают и изменяют через точку, поэтому программа может работать с состоянием каждого объекта независимо.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Объект — созданная в программе сущность, у которой есть состояние и поведение. Состояние задаётся данными, а поведение — действиями, которые объект может выполнять. Объект нужен, чтобы программа могла хранить и обрабатывать сведения о конкретной сущности, например о книге или точке.

Экземпляр класса — конкретный объект, созданный на основе описания класса. Класс задаёт общий набор возможных данных и действий, а экземпляр получает собственные значения. Это позволяет создать много объектов одного типа, например несколько книг, отличающихся названиями и авторами.

Конструктором в школьном описании называют механизм, который запускается при создании объекта и задаёт его начальное состояние. В Python эту настройку обычно выполняет метод __init__. Он нужен, чтобы экземпляр сразу получил необходимые значения, а не оставался без исходных данных.

Атрибут объекта — данные, принадлежащие конкретному объекту и доступные через его имя. Например, у объекта ученик могут быть атрибуты имя и балл. Атрибуты нужны, чтобы сохранять состояние каждого экземпляра и обращаться к его отдельным свойствам.

Как это устроено

Сначала в программе описывают класс, потому что программе нужно знать, какие экземпляры можно создавать и как их настраивать. Затем имя класса вызывают как функцию, например Книга(). Результат вызова сохраняют в переменную, чтобы дальше обращаться к созданному экземпляру. Само описание класса не является готовой книгой: конкретный объект появляется именно при вызове.

При каждом обычном вызове класса Python создаёт новый экземпляр и выделяет ему отдельное состояние. Поэтому два объекта могут принадлежать одному классу, но хранить разные значения. Например, изменение балла одного ученика не должно менять балл другого. Это разделение позволяет независимо обрабатывать множество сущностей в одной программе.

Если в классе определён __init__, Python автоматически вызывает этот метод при создании экземпляра. Метод нужен для настройки объекта в момент появления, чтобы его атрибуты были заданы до дальнейшей работы. Первым параметром обычно записывают self: через него метод получает ссылку на экземпляр, который настраивает. Поэтому присваивание self.имя = значение относится именно к создаваемому объекту.

Аргументы, указанные при вызове класса, передаются параметрам __init__, расположенным после self. Например, вызов Точка(3, 7) передаёт числа 3 и 7 параметрам x и y, если метод объявлен как __init__(self, x, y). Эти значения можно записать в атрибуты self.x и self.y. Такая настройка удобна, потому что объект создаётся уже с нужными координатами.

К атрибуту обращаются через точку: слева указывают переменную с объектом, справа — имя его атрибута. Выражение точка.x получает значение x, а присваивание точка.x = 10 меняет его. Точка в записи связывает действие с конкретным экземпляром, поэтому программа читает или изменяет состояние именно выбранного объекта. Так один класс может описывать общие правила, а экземпляры сохранять разные данные.

Этапы создания и начальной настройки объекта

ЭтапДействие в программеЧто происходит
СозданиеВызов имени классаПоявляется новый экземпляр
ИнициализацияАвтоматический вызов __init__Объект получает начальные значения
Передача параметровАргументы вызова класса поступают в __init__Значения используются для настройки объекта
Работа с объектомОбращение к атрибутам через точкуСостояние объекта читают или изменяют

Таблицу удобно читать сверху вниз: сначала появляется экземпляр, затем ему задают начальные значения. При вызове класса проверь, какие аргументы должны попасть в __init__. После создания объекта используй точечную запись, чтобы работать с его атрибутами.

Разбор задач

Создать объект класса Книга без аргументов и вывести его тип

Условие: требуется создать экземпляр класса Книга, не передавая дополнительных значений, а затем узнать его тип. Предполагается, что класс Книга уже объявлен и его создание не требует аргументов. Результат вызова класса нужно сохранить, иначе к объекту будет неудобно обращаться дальше.

  1. Запиши вызов класса и сохрани результат: книга = Книга(). Имя Книга со скобками означает создание экземпляра, а книга — переменная, в которой будет доступна ссылка на него.
  2. Передай объект функции type: print(type(книга)). Это позволит увидеть тип значения, сохранённого в переменной, а не имя самой переменной.
  3. Сопоставь результат с классом, по которому создан объект. Если класс определён корректно, вывод укажет, что тип экземпляра — Книга.

Ответ: объект создан выражением Книга(), а его тип выводится командой print(type(книга)).

Создать класс Точка с атрибутами x и y, создать объект и задать ему координаты

Условие: нужны два атрибута для хранения координат точки. Значения координат удобно передать при создании, чтобы сразу получить готовый объект. Для настройки используется __init__, а self связывает присваивания с экземпляром.

  1. Определи класс и метод: class Точка: def __init__(self, x, y):. Параметры x и y будут принимать координаты из вызова класса.
  2. В теле метода запиши self.x = x и self.y = y. Так переданные значения сохраняются как атрибуты конкретной точки.
  3. Создай экземпляр выражением точка = Точка(3, 7). Вызов передаст числа параметрам x и y, после чего метод запишет их в объект.
  4. Проверь координаты обращением print(точка.x, точка.y). Точечная запись позволяет получить значения, сохранённые именно у объекта точка.

Ответ: точка хранит координаты x = 3 и y = 7. Если вызвать Точка с другими числами, будет создан экземпляр с другими координатами.

Создать двух учеников, изменить балл первого и сравнить состояния

Условие: у двух объектов класса Ученик должны быть разные имена и баллы. Затем нужно изменить балл первого объекта и убедиться, что второй сохранил своё значение. Для этого каждому экземпляру задают начальные данные при создании.

  1. Определи __init__(self, имя, балл) и сохрани параметры в атрибутах self.имя и self.балл. Так каждый ученик будет хранить собственные имя и результат.
  2. Создай объекты: а = Ученик("Аня", 5) и б = Ученик("Борис", 4). При каждом вызове класса формируется отдельный экземпляр с переданными ему значениями.
  3. Измени значение только у первого объекта командой а.балл = 3. Имя а перед точкой указывает, состояние какого экземпляра нужно изменить.
  4. Выведи а.имя, а.балл, б.имя, б.балл. Сравнение значений покажет, изменился ли балл второго ученика после присваивания первому.

Ответ: у Ани будет балл 3, а у Бориса останется 4. Атрибуты экземпляров независимы, поэтому изменение а.балл не меняет б.балл.

Типичные ошибки

Путать класс и объект — значит считать описание готовым экземпляром. Такая ошибка возникает потому, что оба понятия связаны с одним типом данных. Проверь себя: для создания конкретной сущности нужно вызвать класс со скобками, а переменной присвоить результат вызова.

Если забыть self в определении __init__, метод не получит ссылку на экземпляр, который должен настраивать. Параметр часто опускают, принимая его за необязательное слово. Проверка простая: у метода экземпляра первым параметром должен стоять self, а обращения к атрибутам записываются через self.

При передаче аргументов легко перепутать их порядок или число. Это случается, когда параметры __init__ не сравнивают с аргументами вызова класса. Проверь соответствие: self Python передаёт автоматически, а первый явно указанный аргумент становится значением параметра после self.

Неверно считать атрибуты разных экземпляров общими: из-за этого ожидают, что изменение одного объекта автоматически повлияет на другой. Обычно у экземпляров отдельное состояние, поэтому одинаковые по имени атрибуты могут хранить разные значения. Чтобы проверить себя, создай два объекта, измени атрибут первого и отдельно выведи значения обоих.

Связь с другими темами

Для создания объектов нужно уметь объявлять классы и определять методы на Python: вызов класса использует это описание. Параметры функций помогают передавать в метод начальные данные, а переменные позволяют сохранить созданные экземпляры. Операция обращения через точку применяется для чтения и изменения атрибутов. Эти знания пригодятся при построении моделей реальных сущностей, работе с коллекциями объектов и создании графического интерфейса.

Что запомнить

  • Объект создают вызовом имени класса.
  • Каждый вызов класса обычно создаёт новый экземпляр.
  • Метод __init__ автоматически настраивает новый объект.
  • self указывает на экземпляр, с которым выполняется метод.
  • Начальные значения можно передать аргументами при создании объекта.
  • Атрибуты экземпляра читают и изменяют через точку.

Частые вопросы по теме

Чем объект отличается от класса?

Класс описывает, какие данные и методы могут быть у сущностей данного типа. Объект — конкретная сущность, созданная по этому описанию, со своими значениями атрибутов.

Как создать объект в Python?

Нужно вызвать имя класса, как функцию, и сохранить результат в переменную: например, книга = Книга(). Такой вызов обычно создаёт новый экземпляр класса.

Для чего нужен метод __init__?

Метод __init__ автоматически запускается при создании экземпляра и настраивает его начальное состояние. В него можно передать значения, чтобы сразу записать их в атрибуты объекта.

Что означает self в методе класса?

Параметр self обозначает экземпляр, для которого выполняется метод. Через него метод обращается к атрибутам этого объекта, например записывает значение в self.x.

Почему изменение атрибута одного объекта не меняет другой объект?

У каждого экземпляра обычно своё отдельное состояние и собственные значения атрибутов. Поэтому изменение атрибута одного объекта не затрагивает такой же атрибут другого, если программа специально не использует общие данные.

Спросить по теме параграфа

§ 48. Создание объектов в программе

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
11 класс
Учебник
"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.