Создание класса книги 📚

Одна из вещей, которая привлекает меня в программировании, – это возможность представлять реальные объекты в коде. В этой статье вы узнаете, как создать класс Book с помощью Python. Давайте познакомимся с основной функциональностью объектов и классов Python, создав забавный класс Book! 🐍🖥

Python упражнение 1 😄

Задание
Факт: В библиотеках много книг.

Если мы хотим сделать программу, которая отслеживает все книги в библиотеке, мы можем сделать этот процесс гораздо более эффективным, создав класс для книги, подобно шаблону. Таким образом, мы сможем легче создавать и отслеживать все различные книги.

Атрибуты

Каждая книга должна иметь:

название
автор
описание
дата публикации
isbn
количество экземпляров, доступных для выкупа
список имен людей, у которых в настоящее время есть эта книга, взятая на дом

Что такое книга? (для Python) 🧑🏾💻

Как мы можем сообщить Python о том, что такое книга?
Думайте об атрибутах как о прилагательных и существительных, связанных с книгой?

Примерами книги могут быть…

  • Название: “Сила сейчас”,
  • Автор: “Экхарт Толле”,
  • Описание: “Сила сейчас: Руководство к духовному просветлению”,
  • ISBN: “9781682300688”,
  • Дата публикации: “1997”,
  • Доступные экземпляры: 8,
  • У кого на данный момент есть одна книга: “Ajh”

Давайте начнем с добавления этих простых атрибутов в наш класс Book. Создадим класс Book и создадим метод __init__.

__init__ 🪄

Быстрое отступление, потому что я не могу подчеркнуть важность этого метода, который мы называем конструктором. Конструктор определяет, какими будут наши Книги, когда они впервые будут представлены миру, программе и Python.

self будет ссылаться на конкретную книгу, которую мы создаем. self.title будет ссылаться на название этой конкретной книги.

Мы можем создать новую книгу, вызвав наш конструктор. Мы вызываем и конструктор отвечает, мы спрашиваем: “Могу ли я создать одну новую книгу, используя эти атрибуты?”. Конструктор удовлетворяет запрос и создает новую книгу.

Обратите внимание, что когда мы создаем новую книгу, мы говорим вот так

В этом примере мы вызываем Book(…), а не __init__.
Мы также можем добавить вторую книгу в нашу коллекцию, обновив наш код

У меня есть экземпляр 🍪

На данный момент мы создали два экземпляра нашего класса Book. Экземпляр – это один экземпляр объекта. В наших примерах выше у нас было два экземпляра Book, но их атрибуты являются специфическими для каждой из соответствующих книг.

Методы: Что может сделать библиотечная книга 🥳.

Функциональные требования

Обычно методы связаны хотя бы с одним из ваших атрибутов.

Для каждой Книги мы должны иметь возможность:

  • checkout одну книгу одному человеку: Эта функция должна обновлять количество экземпляров, доступных для выкупа, и список имен людей, у которых в настоящее время выписана эта книга.

  • checkin одна книга у одного человека: Эта функция должна обновить количество экземпляров, доступных для проверки, и список имен людей, у которых эта книга в настоящее время проверена.

  • добавить несколько копий этой книги: Эта функция должна обновить количество доступных экземпляров

  • удалить дополнительные экземпляры этой книги: Эта функция должна обновить доступные экземпляры.

Эти действия могут изменить некоторые атрибуты, которыми мы уже наделили нашу книгу, или потребовать добавления новых атрибутов. Давайте сначала обновим наш класс Book, чтобы его можно было проверять. Мы создадим метод checkout внутри нашего класса.

Параметр self указывает на конкретную книгу, к которой мы прикрепляем этот метод. Параметр name указывает на конкретное имя человека, проверяющего книгу. В этом методе мы добавляем имя в список checked_out_by, добавляя его, а затем уменьшаем copies_available на 1.

Не слишком быстро 🚦

Для выполнения этой задачи мы будем использовать объектно-ориентированное проектирование, хотя оно взаимозаменяемо с объектно-ориентированным программированием.
Что такое ООП? Объектно-ориентированное программирование – это модель компьютерного программирования, которая организует разработку программного обеспечения вокруг данных, или объектов, а не функций и логики. Объект можно определить как поле данных, которое имеет уникальные атрибуты и поведение. Думайте об ООП как о создании шаблона для создаваемых вами наборов данных. ООП позволяет вам создавать новые типы данных в вашем коде, которые иначе были бы вам недоступны.

Вернемся к делу 😄

Давайте добавим в наш класс функцию проверки книги. Это будет действие, противоположное нашему действию checkout, вместо него мы создадим действие check_in.

Обратите внимание, что в этом методе мы удаляем имя из списка checked_out_by, вызывая .remove() и передавая name, а затем мы увеличиваем copies_available на 1.

Далее нам нужно добавить метод, который:

  • добавляет новые копии на полку
  • удаляет копии с полки

Поскольку у нас есть copies_available в виде числа, мы можем легко манипулировать его значением.

Посмотрите на это в действии! 🎬 Вот несколько примеров действий, которые мы теперь можем выполнять с нашей книгой:

  • Выведет “The Power of Now” на терминал

  • Выведет “Ajh” и “Kyrie” на терминал

  • Будет выводить “7” на терминал

  • Будет выводить “10” на терминал

  • Будет выводить “Ajh”, “Malcolm” и “Mansa Mua” на терминал

Резюме

Наш последний класс книг

Какие еще действия или атрибуты мы можем добавить в книгу? Прокомментируйте ниже, если вы думаете о крутом родственном атрибуте. 😄

Оцените статью
Procodings.ru
Добавить комментарий