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

Классы

Пишем свой первый класс — чертёж, по которому Python будет создавать объекты.

Классы

Определим свой собственный класс — чертёж для объекта «Собака»:

klass_sobaka.py
class Sobaka:
    def __init__(self, klichka, vozrast):
        self.klichka = klichka
        self.vozrast = vozrast

rex = Sobaka("Рекс", 3)
print(rex.klichka, rex.vozrast)

__init__ — специальный метод, который автоматически выполняется при создании объекта (Sobaka("Рекс", 3)) и настраивает его начальное состояние. self — ссылка на сам создаваемый объект; Python передаёт её автоматически, и первым параметром __init__ (и любого другого метода) она должна быть всегда. Подробно, что здесь происходит «под капотом», разберём в разделах 14.5-14.6 — сейчас достаточно рабочей модели.

Класс vs объект — аналогия с формой для печенья
Класс — как форма для печенья: одна и та же форма может «вырезать» сколько угодно печений (объектов) — каждое своё, но по одному и тому же шаблону.
Где аналогия ломается
Форма для печенья — пассивный инструмент: она сама ничего не делает и не хранит состояния. Класс в Python — не пассивный шаблон, а самостоятельный объект: у него можно спросить type(rex), ему самому можно назначать атрибуты, его можно передать в переменную. Пользуйтесь аналогией, чтобы запомнить «один чертёж → много экземпляров», но не воспринимайте её буквально дальше этого.
Sobakaklichkavozrast
Класс Sobaka — описывает БУДУЩИЕ атрибуты, но ещё не содержит ни одного значения

Объекты со своими значениями

Каждый объект хранит свои собственные значения атрибутов, независимо от других объектов того же класса:

raznye_obekty.py
rex = Sobaka("Рекс", 3)
sharik = Sobaka("Шарик", 5)

print(rex.klichka, rex.vozrast)      # Рекс 3
print(sharik.klichka, sharik.vozrast)  # Шарик 5 — независимо от rex
rex : Sobakaklichka = 'Рекс'vozrast = 3
Объект rex — конкретные значения
sharik : Sobakaklichka = 'Шарик'vozrast = 5
Объект sharik — свои значения, тот же класс

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

Практика: создаём собственные классы
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →