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

§ 67. Работа с объектами

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

Объяснение темы В оглавлении: § 67. Работа с объектами

Кратко о теме

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

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

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

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

Объект — сущность в программе, которая хранит данные и имеет тип. Объектами являются не только списки и строки, но и значения вроде числа 5 или результата вычисления 2 + 3. Это понятие помогает описывать любые данные, с которыми работает программа.

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

Метод — действие, которое можно вызвать у объекта. Имя метода записывают после точки, а круглые скобки показывают, что действие нужно выполнить: объект.метод(). Методы нужны, чтобы выполнять операции, подходящие для конкретного типа объекта.

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

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

Объекты появляются во время выполнения программы, когда Python обрабатывает значения. Литерал вроде строки 'дом' или списка [1, 2] уже задаёт объект, а выражение вроде 4 + 5 создаёт значение-результат. Поэтому переменная обычно не является самим объектом: она даёт программе имя, через которое можно обратиться к значению.

У каждого объекта есть тип, который определяет, какие данные и действия с ним доступны. Например, сложение чисел вычисляет сумму, а сложение строк соединяет текст; одинаковый символ операции работает по-разному из-за типов. Узнать тип помогает функция type(): вызов type(x) возвращает информацию о типе объекта x.

Атрибуты и методы записывают через точку, потому что они принадлежат конкретному объекту или связаны с ним. Например, у строки s можно запросить метод s.upper. Но такая запись сама по себе не выполняет действие: она обозначает метод. Чтобы получить результат работы, нужны скобки — s.upper().

Метод может вернуть новое значение, оставив исходный объект прежним, или изменить сам объект. Строковый метод upper() создаёт строку в верхнем регистре, а исходная строка остаётся неизменной. Список, напротив, можно изменить методом append() или sort(); эти методы обычно возвращают None, потому что результатом действия становится изменение самого списка.

Присваивание переменной объекта не всегда означает создание его копии. После команды b = a обе переменные могут указывать на один изменяемый список, поэтому изменение через b будет заметно и через a. Такое поведение удобно, когда нужен общий объект, но может неожиданно менять данные; если нужна независимая версия списка, следует создать копию.

Объекты и типичные действия с ними в Python

Объект и типПример атрибута или методаКак получить результатИзменяется ли исходный объект
Строка (str)upper(), lower(), обращение по индексуs.upper() возвращает строку в верхнем регистре; s[0] даёт первый символНет: строка неизменяема
Список (list)append(), sort(), обращение по индексуa.append(4) добавляет элемент; a.sort() упорядочивает списокДа: append() и sort() меняют список
Число (int или float)Арифметические операции; например, bit_length() у intРезультат операции можно сохранить в переменную; для int вызвать n.bit_length()Нет: числовые значения неизменяемы
Изменяемые и неизменяемые объектыМетоды списка и строкиСравнить значение до и после вызова методаСписок можно менять, строку — нет; метод может вернуть новое значение

Сначала найдите тип объекта, затем проверьте, что делает выбранный метод: возвращает результат или меняет объект. Для строки результат upper() нужно сохранить, если он понадобится дальше. Для списка после append() или sort() обращайтесь к самому списку: метод меняет его на месте.

Разбор задач

Определяем типы, регистр и длину

Условие. Даны s = 'Информатика' и a = [3, 1, 2]. Нужно определить тип каждого значения, получить строку в верхнем регистре и найти длину списка. Сначала различим функции и методы: type() и len() вызываются как функции, а upper() — как метод строки.

  1. Вызвать type(s) и type(a). Результаты покажут, что s имеет тип str, а a — тип list.
  2. Вызвать s.upper(). Метод вернёт новую строку 'ИНФОРМАТИКА', не меняя значение s.
  3. Вызвать len(a). Эта функция посчитает элементы списка; обращаться к ней через точку не нужно.

Ответ. Типы — str и list, строка в верхнем регистре — 'ИНФОРМАТИКА', длина списка — 3. Если присвоить результат s.upper() переменной, в ней будет новая строка, а исходный s останется прежним.

Добавляем число и упорядочиваем список

Условие. Дан список a = [5, 2, 4]. Добавим число 3, упорядочим элементы и выведем изменённый список. Здесь нужно выбрать методы, которые меняют список на месте, и не ждать от них нового списка в качестве результата.

  1. Выполнить a.append(3). Новый элемент окажется в конце, и список станет [5, 2, 4, 3].
  2. Вызвать a.sort(). Метод расставит элементы по возрастанию; после него a будет равен [2, 3, 4, 5].
  3. Вывести a. Выводить нужно именно переменную со списком, а не результат вызова append() или sort().

Ответ. После добавления числа и сортировки список имеет вид [2, 3, 4, 5]. Оба метода изменили исходный объект, поэтому отдельное присваивание результата не требуется.

Проверяем, что происходит при присваивании

Условие. Есть список a = [1, 2], затем выполняется b = a и список меняется через b. Нужно понять, что окажется в a, и сравнить это с созданием копии. Проследим не только за именами переменных, но и за тем, с каким объектом они связаны.

  1. После b = a переменные a и b ссылаются на один список, а не на два одинаковых списка.
  2. Выполнить b.append(3). Меняется общий объект, поэтому при обращении через a тоже виден список [1, 2, 3].
  3. Для независимого списка создать копию: c = a.copy(). Если затем изменить c, список a останется прежним.

Ответ. После изменения через b переменная a также показывает [1, 2, 3]. Копия c — отдельный список, поэтому изменение c не меняет a.

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

  • Считать, что b = a автоматически копирует список. Так думают, потому что у переменных разные имена, но обе могут ссылаться на один объект. Проверьте себя: добавьте элемент через b и выведите a; если элемент появился, копирования не было.

  • Записывать s.upper без скобок и ожидать готовую строку. Такая запись указывает на метод, но не вызывает его; ошибку легко допустить, приняв имя действия за результат. Проверьте себя: вызовите s.upper() и сравните результат со значением s.upper.

  • Сохранять результат append() или sort() обратно в переменную списка. Эти методы меняют список на месте и обычно возвращают None, поэтому присваивание может заменить список на None. Проверьте себя: выполните a.append(4), а затем выведите a.

  • Пытаться изменить отдельный символ строки так же, как элемент списка. Строка неизменяема, хотя обращение по индексу позволяет прочитать её символ. Проверьте себя: чтение s[0] допустимо, но присваивание нового символа по этому индексу вызовет ошибку.

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

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

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

  • В Python данные представлены объектами определённого типа.

  • Тип объекта определяет доступные для него операции и методы.

  • К атрибуту или методу обращаются через точку.

  • Метод вызывают с помощью круглых скобок.

  • Одни методы возвращают результат, другие изменяют объект.

  • Присваивание изменяемого объекта может передать ссылку, а не создать копию.

  • Строки неизменяемы, списки изменяемы.

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

Что в Python называется объектом?

Объект — это значение в программе, у которого есть тип и собственные данные. Например, строка 'привет', число 7 и список [1, 2] — объекты.

Чем атрибут отличается от метода?

Атрибут — это данные или характеристика, связанные с объектом; к нему обращаются через точку. Метод — действие объекта, его вызывают через точку и круглые скобки, например s.upper().

Как узнать тип объекта?

Передайте объект функции type(), например type([1, 2]). Она покажет тип list. Тип помогает выяснить, какие операции и методы доступны.

Почему после вызова append() не нужно присваивать результат обратно списку?

Метод append() изменяет исходный список: добавляет элемент в конец. Он обычно возвращает None, а не новый список, поэтому присваивание результата затрёт переменную значением None.

Почему изменение списка через одну переменную может изменить его и через другую?

После присваивания b = a обе переменные могут ссылаться на один и тот же список. Поэтому изменение списка через b видно и при обращении через a. Чтобы получить отдельный список, создают копию, например b = a.copy().

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

§ 67. Работа с объектами

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

Учебник

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