Представьте форму для печенья. Сама форма — это классШаблон для создания объектов: описывает их данные (атрибуты) и поведение (методы).: она задаёт контур, но съесть её нельзя. А вот печенье, которое вы из неё вырезали — это объектыКонкретный экземпляр класса — со своими данными. Почти всё в Python является объектом.. Из одной формы получается много печений: одно с корицей, другое с шоколадом — у каждого свои «атрибуты», но все сделаны по одному шаблону. Менять форму, чтобы получить новое печенье, не нужно — просто вырезаете ещё одно.
Зачем нужно ООП
До сих пор мы хранили данные в переменных, а поведение — в функциях, отдельно. Объектно-ориентированное программирование (ООП) объединяет их: данные и действия над ними живут вместе в одном объекте. Так пишут почти все реальные программы — от игр до банковских систем.
Класс — это чертёж (шаблон). Объект — конкретный экземпляр, созданный по этому чертежу. Класс «Машина» — чертёж; ваша красная Toyota — объект. Из одного класса можно создать сколько угодно объектов.
▶ first-class.py
Разбираем по частям
class Dog: — объявляем класс (с большой буквы по соглашению).
__init__ — особый методФункция, привязанная к объекту и вызываемая через точку: text.upper().-конструктор: вызывается автоматически при создании объекта.
self — ссылка на сам объект. Через него хранят и читают атрибуты. Первый параметр любого метода.
self.name = name — атрибут: данные, привязанные к объекту.
bark — метод: функцияИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат. внутри класса, описывающая поведение.
📝Заметка
self Python подставляет сам. Когда вы пишете rex.bark(), интерпретатор вызывает Dog.bark(rex) — то есть self становится rex. Поэтому self всегда первый параметр метода, но при вызове его не передают.
💡Совет
🔮 Предскажите вывод
Каждый объект хранит свои собственные атрибуты. Что выведет код ниже после того, как мы создадим двух собак и изменим возраст только одной из них?
▶ predict-objects.py
Ответ — 4 5. Объекты независимы: атрибуты rex и bobik хранятся отдельно, поэтому изменение rex.age никак не затрагивает bobik. Это и есть смысл слова «экземпляр» — у каждого своя копия данных.
⚠️ Частые ошибки новичков
Самая частая ошибка новичка в ООП — забыть self в определении метода. Тогда Python попытается передать объект в несуществующий параметр и выдаст TypeError. Запустите сломанный код и почините метод bark, добавив self.
▶ broken-self.py
Заданиерешение.py
Создайте класс Circle с конструктором, принимающим radius. Добавьте метод area(), возвращающий площадь круга (π·r², используйте 3.14159).
Заданиерешение.py
Доп. задача. Создайте класс Counter: конструктор задаёт self.count = 0. Метод increment() увеличивает счётчик на 1, метод value() возвращает текущее значение. Проверьте, что два разных счётчика не мешают друг другу.
❓Проверь себя
Что такое self в методе класса?
Когда вызывается метод __init__?
ℹ️Важно
✅ Что вы узнали
Класс — чертёж (форма для печенья), объект — конкретный экземпляр по этому чертежу.
__init__ — конструктор, вызывается автоматически при создании объекта.
self — ссылка на сам объект; через него хранят и читают атрибуты.
Объекты независимы: у каждого свои атрибуты, изменение одного не трогает другие.
Метод без self в первом параметре приводит к TypeError.
Комментарии
Загрузка…
Загрузка комментариев…