【问题标题】:Python class and book counter [closed]Python课程和书籍柜台[关闭]
【发布时间】:2021-05-10 09:22:23
【问题描述】:

我正在写一个名为“书”的课程。每本书都应该有一个标题和一个作者。班级应该能够自动计算书籍的数量。

我被困在这里 - 刚开始 - 并且不知道如何让这种方法计算书籍。

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

..有什么建议吗?

【问题讨论】:

标签: python class methods pycharm counting


【解决方案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”的实例并在那里计数。

编辑:我在网上查了一下,找到了一个类似的解决方案,它是一个“员工”类。

这里是website's 答案:

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

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1

【讨论】:

  • 请附上该网站的链接
  • 我已经做到了。
【解决方案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')

【讨论】:

    【解决方案3】:

    你的逻辑有问题。

    每本书的实例应该是独立的,为什么它应该被其他书注意到/改变? 考虑创建一个父类 Books,一本书的每个实例都会增加一个书籍计数器。

    如果出于任何原因,您仍想在 Book 类中执行此操作,请创建一个类属性,并在为您创建的每本书调用的 __init__() 中修改它。

    考虑阅读 -

    1. Achieving loose coupling
    2. Python Class Attributes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多