ООП в Python
Программы часто моделируют вещи из реального мира: банковский счёт, пользователя, машину. У каждой такой вещи есть данные (баланс, имя, скорость) и действия (внести деньги, представиться, ускориться).
Первый пример
Опишем класс Car и создадим по нему две машины. В синтаксис пока не вглядывайтесь: и class, и __init__, и self по шагам разберёт следующая глава. Сейчас важна форма: данные и действия описаны в одном месте.
Python 3.13class Car: def __init__(self, make, model): self.make = make self.model = model self.is_running = False def start_engine(self): self.is_running = True return f"{self.make} {self.model}: двигатель запущен" def stop_engine(self): self.is_running = False return f"{self.make} {self.model}: двигатель остановлен" my_car = Car("Toyota", "Corolla") another_car = Car("Honda", "Civic") print(another_car.start_engine())Honda Civic: двигатель запущенprint(my_car.is_running)Falseprint(another_car.is_running)True
Двигатель запустили только у второй машины, и is_running поменялся только у неё. В этом суть: из одного класса создаётся сколько угодно объектов, и у каждого свои данные.
Класс и объект
Термины, которыми это описывают:
- Car — класс: шаблон, по которому создаются объекты
- my_car, another_car — объекты (экземпляры) этого класса
- make, model, is_running — атрибуты: данные объекта
- start_engine(), stop_engine() — методы: действия объекта
Четыре принципа ООП
ООП традиционно строится на четырёх концепциях. Каждой дальше посвящён отдельный урок (абстракцию разберём внутри урока про полиморфизм), так что пока хватит одной фразы о каждой:
- Инкапсуляция — упаковка данных и методов, которые с этими данными работают, в один объект. Внешний код не лезет в детали реализации, а работает через интерфейс класса.
- Наследование — создание нового класса на основе существующего с переиспользованием его атрибутов и методов.
- Полиморфизм — возможность работать с объектами разных классов через единый интерфейс (одинаково вызвать .area() у круга, квадрата и треугольника).
- Абстракция — выделение существенных характеристик объекта, скрытие неважных деталей.
Проверка понимания
Чем класс отличается от объекта?
Следующая глава — «Классы»: разберём весь синтаксис, который здесь мелькнул, шаг за шагом.
