Добавить в корзинуПозвонить
Найти в Дзене
Технологии

Основы ООП: создаем первый класс Book

Добро пожаловать на первый этап нашего большого пути освоения объектно-ориентированного программирования (ООП)! Сегодня мы сделаем важный шаг вперед и напишем наш первый класс, положив начало нашему проекту — системе управления виртуальной библиотекой. Наша цель — познакомиться с основными понятиями ООП и понять, как создаются и используются классы и объекты в Python. Начнём с простого примера — создадим класс `Book`. Представьте себе простую электронную книжку, хранящую название, автора и год издания. Вот каким будет наш самый простой класс: Теперь давайте разберём подробнее каждую строчку. Класс — это шаблон для создания объектов. Объект — это экземпляр класса, обладающий своими уникальными характеристиками и поведением. Например, книга — это класс, а каждая отдельная книга («Война и мир», «Преступление и наказание») — это объект. Наш класс называется `Book`, и он определяет общие характеристики и поведение для всех книг, которые будут созданы на его основе. Метод `__init__` является
Оглавление

Добро пожаловать на первый этап нашего большого пути освоения объектно-ориентированного программирования (ООП)! Сегодня мы сделаем важный шаг вперед и напишем наш первый класс, положив начало нашему проекту — системе управления виртуальной библиотекой. Наша цель — познакомиться с основными понятиями ООП и понять, как создаются и используются классы и объекты в Python.

Кролик с книгой
Кролик с книгой

Начнём с простого примера — создадим класс `Book`. Представьте себе простую электронную книжку, хранящую название, автора и год издания. Вот каким будет наш самый простой класс:

Создание класса "Book"
Создание класса "Book"

Теперь давайте разберём подробнее каждую строчку.

Что такое класс и объект класса

Класс — это шаблон для создания объектов. Объект — это экземпляр класса, обладающий своими уникальными характеристиками и поведением. Например, книга — это класс, а каждая отдельная книга («Война и мир», «Преступление и наказание») — это объект.

Наш класс называется `Book`, и он определяет общие характеристики и поведение для всех книг, которые будут созданы на его основе.

Метод-конструктор `__init__`

Метод `__init__` является конструктором класса. Когда мы создаём новый объект, автоматически вызывается конструктор, чтобы задать начальное состояние объекта. Именно здесь определяются поля класса — свойства, которыми обладает объект.

У каждого объекта класса `Book` будут три поля:

  1. `title`: Название книги.
  2. `author`: Автор книги.
  3. `year`: Год публикации книги.
Создание класса Book с конструктором __init__ и тремя свойствами title, author, year
Создание класса Book с конструктором __init__ и тремя свойствами title, author, year

Каждая строка вида `self.<поле>` присваивает значение соответствующему полю объекта. Переменная `self` используется для обращения к самому объекту внутри методов класса.

Создаем метод `info` для получения информации о книге

Это обычный метод класса, который возвращает строку с информацией о книге. Здесь мы используем специальную конструкцию строки формата `f-string`, которая позволяет вставлять значения прямо внутрь строки.

-4

Например, вот как выглядит вывод информации о книге:

book = Book("Мастер и Маргарита", "Михаил Булгаков", 1967)
print(book.info()) # Выведет: Мастер и Маргарита, Михаил Булгаков, 1967

Для примера вывели по отдельности все поля класса Book и полную информацию, как раз наглядная работа созданного нами конструктора.

Получение информации о книге через через метод info()
Получение информации о книге через через метод info()

Подробнее о конструкции self и доступе к полям класса

Чтобы глубже погрузиться в тему и лучше понимать, как работают классы и методы в Python, предлагаю внимательно рассмотреть механизм доступа к полям объекта через ключевое слово self.

Что такое self?

self — это специальная переменная, автоматически передаваемая первым аргументом любому методу класса. Она ссылается на сам объект, которому принадлежит этот метод. Благодаря этому внутри методов класса можно обращаться к внутренним данным (полям) и другим методам конкретного объекта.

Когда вы вызываете метод объекта, интерпретатор Python подставляет ссылку на объект в качестве первого параметра, и эта ссылка доступна через self.

Как вызываются поля объекта?

Рассмотрим наш метод info() чуть внимательнее:

def info(self):
return f"{self.title}, {self.author}, {self.year}"

Здесь self.title, self.author и self.year обращаются к соответствующим полям текущего объекта. Эти поля были определены ранее в конструкторе класса:

__init__(self, title, author, year):
self.title = title
self.author = author
self.year = year

При создании нового объекта типа Book, скажем:

book = Book("Анчар", "Александр Пушкин", 1828)
Переменные
title, author и year, указанные при вызове конструктора, становятся значениями соответствующих полей объекта book. Затем метод info() получает доступ к этим полям через self, возвращая сформированную строку:

print(book.info()) # выведет: Анчар, Александр Пушкин, 1828

внимание, что когда вы вызываете метод, не нужно передавать аргумент для self. Интерпретатор делает это автоматически. Например:

my_book = Book("Евгений Онегин", "Александр Пушкин", 1831)
result = my_book.info() # вызов info(), где self автоматически установлен как my_book

F-строки (форматированные строки)

Строка формата, использованная в методе info(), записана следующим образом:

return f"{self.title}, {self.author}, {self.year}"

современная конструкция Python, называемая f-строкой (formatted string). Внутри фигурных скобок {...} помещаются выражения, которые автоматически преобразуются в строки и вставляются на своё место. Таким образом, мы можем удобно формировать динамические строки, включающие данные из объекта. Эта техника позволяет избежать длинных цепочек конкатенации и делает код гораздо чище и понятнее.

Итоги первого шага учебного проекта по созданию класса Book в системе управления виртуальной библиотекой книг

Итак, мы сделали первые шаги в нашем проекте. Теперь вы знаете, как создать базовый класс, определить его поля и добавить метод для отображения информации. Уже на этом этапе видно, насколько мощной становится ваша разработка, когда вы начинаете применять объектно-ориентированный подход.

Что дальше? Следующий этап ждёт впереди: мы продолжим углубляться в тему ООП и перейдем к защите данных и управлению доступом к свойствам объектов. Оставайтесь с нами, ведь самое интересное ещё впереди!

Продолжайте практиковать и совершенствовать свои навыки вместе с нашим проектом!

Наши шаги

  1. Мы на этом шаге