"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Объект — конкретная сущность, созданная в программе по описанию класса. Объекты помогают моделировать данные и действия: например, хранить имя ученика и его баллы, координаты точки или свойства книги. Вызов класса создаёт отдельный экземпляр, а метод __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__. После создания объекта используй точечную запись, чтобы работать с его атрибутами.
Условие: требуется создать экземпляр класса Книга, не передавая дополнительных значений, а затем узнать его тип. Предполагается, что класс Книга уже объявлен и его создание не требует аргументов. Результат вызова класса нужно сохранить, иначе к объекту будет неудобно обращаться дальше.
Ответ: объект создан выражением Книга(), а его тип выводится командой print(type(книга)).
Условие: нужны два атрибута для хранения координат точки. Значения координат удобно передать при создании, чтобы сразу получить готовый объект. Для настройки используется __init__, а self связывает присваивания с экземпляром.
Ответ: точка хранит координаты x = 3 и y = 7. Если вызвать Точка с другими числами, будет создан экземпляр с другими координатами.
Условие: у двух объектов класса Ученик должны быть разные имена и баллы. Затем нужно изменить балл первого объекта и убедиться, что второй сохранил своё значение. Для этого каждому экземпляру задают начальные данные при создании.
Ответ: у Ани будет балл 3, а у Бориса останется 4. Атрибуты экземпляров независимы, поэтому изменение а.балл не меняет б.балл.
Путать класс и объект — значит считать описание готовым экземпляром. Такая ошибка возникает потому, что оба понятия связаны с одним типом данных. Проверь себя: для создания конкретной сущности нужно вызвать класс со скобками, а переменной присвоить результат вызова.
Если забыть self в определении __init__, метод не получит ссылку на экземпляр, который должен настраивать. Параметр часто опускают, принимая его за необязательное слово. Проверка простая: у метода экземпляра первым параметром должен стоять self, а обращения к атрибутам записываются через self.
При передаче аргументов легко перепутать их порядок или число. Это случается, когда параметры __init__ не сравнивают с аргументами вызова класса. Проверь соответствие: self Python передаёт автоматически, а первый явно указанный аргумент становится значением параметра после self.
Неверно считать атрибуты разных экземпляров общими: из-за этого ожидают, что изменение одного объекта автоматически повлияет на другой. Обычно у экземпляров отдельное состояние, поэтому одинаковые по имени атрибуты могут хранить разные значения. Чтобы проверить себя, создай два объекта, измени атрибут первого и отдельно выведи значения обоих.
Для создания объектов нужно уметь объявлять классы и определять методы на Python: вызов класса использует это описание. Параметры функций помогают передавать в метод начальные данные, а переменные позволяют сохранить созданные экземпляры. Операция обращения через точку применяется для чтения и изменения атрибутов. Эти знания пригодятся при построении моделей реальных сущностей, работе с коллекциями объектов и создании графического интерфейса.
Чем объект отличается от класса?
Класс описывает, какие данные и методы могут быть у сущностей данного типа. Объект — конкретная сущность, созданная по этому описанию, со своими значениями атрибутов.
Как создать объект в Python?
Нужно вызвать имя класса, как функцию, и сохранить результат в переменную: например, книга = Книга(). Такой вызов обычно создаёт новый экземпляр класса.
Для чего нужен метод __init__?
Метод __init__ автоматически запускается при создании экземпляра и настраивает его начальное состояние. В него можно передать значения, чтобы сразу записать их в атрибуты объекта.
Что означает self в методе класса?
Параметр self обозначает экземпляр, для которого выполняется метод. Через него метод обращается к атрибутам этого объекта, например записывает значение в self.x.
Почему изменение атрибута одного объекта не меняет другой объект?
У каждого экземпляра обычно своё отдельное состояние и собственные значения атрибутов. Поэтому изменение атрибута одного объекта не затрагивает такой же атрибут другого, если программа специально не использует общие данные.
§ 48. Создание объектов в программе