Python class 和书柜
Python class and book counter
我正在写一本 class 名为“书”的书。每本书都应该有一个标题和一个作者。 class应该可以自动统计书本数量
我卡在这里-刚开始-不知道如何让这个方法统计书籍。
class Book:
author: str = ""
title: str = ""
def __init__(self, author, title):
self.author = author
self.title = title
..有什么建议吗?
我是这样做的,书架里面有书:
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')
你的逻辑有问题。
每本书的实例应该是独立的,为什么它应该 notice/changed 由其他书?
考虑创建父 class 书籍,书籍的每个实例都会增加一个书籍计数器。
如果出于任何原因,您仍想在本书 class 中执行此操作,请创建一个 class 属性,并在每个调用的 __init__()
中修改它您创建的书。
考虑阅读 -
基本上正如用户 IlayG01 所说,您可以在 class 中实现一个计数器,或者使用一个超级 class 来计算创建的书籍。
class Book:
author: str = ""
title: str = ""
counter = 0
def __init__(self, author, title):
self.author = author
self.title = title
Book.counter += 1
我认为这会奏效,但还有一个更 'profound' 的答案是拥有一个超级 class “书籍”,您可以在其中创建“书籍”的实例并在那里计数.
编辑:我在网上查了一下,发现了一个类似的解决方案,它是一个“员工”class。
这是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
我正在写一本 class 名为“书”的书。每本书都应该有一个标题和一个作者。 class应该可以自动统计书本数量
我卡在这里-刚开始-不知道如何让这个方法统计书籍。
class Book:
author: str = ""
title: str = ""
def __init__(self, author, title):
self.author = author
self.title = title
..有什么建议吗?
我是这样做的,书架里面有书:
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')
你的逻辑有问题。
每本书的实例应该是独立的,为什么它应该 notice/changed 由其他书? 考虑创建父 class 书籍,书籍的每个实例都会增加一个书籍计数器。
如果出于任何原因,您仍想在本书 class 中执行此操作,请创建一个 class 属性,并在每个调用的 __init__()
中修改它您创建的书。
考虑阅读 -
基本上正如用户 IlayG01 所说,您可以在 class 中实现一个计数器,或者使用一个超级 class 来计算创建的书籍。
class Book:
author: str = ""
title: str = ""
counter = 0
def __init__(self, author, title):
self.author = author
self.title = title
Book.counter += 1
我认为这会奏效,但还有一个更 'profound' 的答案是拥有一个超级 class “书籍”,您可以在其中创建“书籍”的实例并在那里计数.
编辑:我在网上查了一下,发现了一个类似的解决方案,它是一个“员工”class。
这是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