Nano Hash - криптовалюты, майнинг, программирование

Класс Python и счетчик книг

Я пишу класс под названием книга. Каждая книга должна иметь название и автора. Класс должен уметь автоматически подсчитывать количество книг.

Я застрял здесь - в самом начале - и не знаю, как заставить этот метод считать книги.

class Book:
author: str = ""
title: str = ""
 def __init__(self, author, title):
     self.author = author
     self.title = title

..какие-либо предложения?



Ответы:


1

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

class Book:
   author: str = ""
   title: str = ""
   counter = 0
   def __init__(self, author, title):
      self.author = author
      self.title = title
      Book.counter += 1

Я думаю, что это сработает, но более «глубоким» ответом было бы наличие суперкласса Books, в котором вы можете создавать экземпляры Book и подсчитывать их там.

РЕДАКТИРОВАТЬ: я проверил в Интернете и нашел похожее решение, это был класс Employee.

Вот ответ веб-сайта:

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
10.05.2021
  • Включите ссылку на этот веб-сайт. 10.05.2021
  • Я сделал дело. 11.05.2021

  • 2

    Я сделал это так, с книгами внутри полки:

    class Book:
         def __init__(self, author, title):
            self.author = author
            self.title = title
    class Shelf:
        def __init__(self, books=[]):
            self.books = books
        def add_book(self,book):
            self.books.append(book)
        def count_books(self):
            return len(self.books)
    Book_one = Book('Me1','Test1')
    Book_two = Book('Me2','Test2')
    Book_three = Book('Me3','Test3')
    shelf = Shelf()
    shelf.add_book(Book_one)
    shelf.add_book(Book_two)
    shelf.add_book(Book_three)
    print(f'You have {shelf.count_books()} in your shelf')
    
    10.05.2021

    3

    что-то в вашей логике не так.

    каждый экземпляр книги должен быть независимым, почему он должен быть замечен/изменен другой книгой? рассмотрите возможность создания родительского класса Books, чтобы каждый экземпляр книги увеличивал счетчик книг.

    если по какой-либо причине вы все еще хотите сделать это в классе Book, создайте атрибут класса и измените его в __init__(), который вызывается для каждой создаваемой вами книги.

    почитай прочитай -

    1. Достижение слабой связи
    2. Атрибуты класса Python
    10.05.2021
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..