Глава 14 · Создаём объекты реального мира

Что такое объектно-ориентированное программирование?

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

Объект — то, что уже знакомо, но с новым именем

Присмотритесь к коду из предыдущих глав: artist.forward(100), "Python".upper(), [1,2,3].append(4) — во всех трёх у нас есть какой-то объект (черепашка, строка, список) и команда, которую мы у него вызываем через точку. Всё это время вы уже работали с объектами — этот раздел просто даёт знакомой идее точное имя.

У любого объекта в Python есть две стороны:

Сторона объектаПример у artist (черепашки)
Состояние — данные, которые объект хранит прямо сейчастекущие координаты, цвет, направление
Поведение — действия, которые объект умеет выполнятьforward(), right(), color()

Объектно-ориентированное программирование (ООП) — это способ организовать код вокруг таких объектов: данные и действия, которые к ним относятся, живут вместе, а не разбросаны по отдельным переменным и функциям.

Тип объекта: type()

У каждого объекта в Python есть тип — узнать его можно встроенной функцией type(), с которой вы уже знакомы:

tip_obekta.py
artist = __import__("turtle").Turtle()
print(type(artist))     # <class 'turtle.Turtle'>
print(type("Python"))   # <class 'str'>
print(type([1, 2, 3]))  # <class 'list'>

Слово class в каждом ответе — не случайность. Тип объекта — это и есть его класс.

Давайте это докажем!

Вы уже пользовались объектами с самой главы 6, даже не называя их так:

vy_uzhe_polzovalis_obektami.py
import turtle

artist = turtle.Turtle()   # artist — объект класса Turtle
artist.forward(100)         # forward() — действие (метод) этого объекта
artist.color("red")         # у объекта есть и своё состояние — например, цвет

turtle.Turtle — это класс: чертёж, шаблон, описывающий, какими бывают черепашки и что они умеют. Каждый вызов turtle.Turtle() создаёт новый, независимый объект (говорят также «экземпляр класса») по этому чертежу — вспомните главу 12, где несколько независимых черепашек участвовали в гонке одновременно: у каждой было своё состояние (позиция, цвет), хотя все они были черепашками одного и того же класса.

Класс описывает БУДУЩИЕ объекты, а не один конкретный
turtle.Turtle сам по себе не имеет позиции на экране — позиция появляется только у КАЖДОГО созданного объекта turtle.Turtle() отдельно. Класс — это описание того, какими будут объекты, а не сам объект.
Практика: находим объекты в уже знакомом коде
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →