python - Python 中的 OOP 入门 - 问题
问题描述
我是 Python 的 OOP 新手,我有一个问题。希望你能帮助我 :D 这是完整的脚本。
class Book:
def __init__(self, isbn, title, author, publisher, pages, price, copies):
self.isbn = isbn
self.title = title
self.author = author
self.publisher = publisher
self.pages = pages
self.price = price
self.copies = copies
def display(self):
print(self.isbn, self.title, self.price, self.copies)
def in_stock(self):
return True if self.copies > 0 else False
def sell(self):
if self.in_stock():
self.copies -= 1
print("Number of copies now:", self.copies)
else:
print("No stock at the moment")
def listas(self):
lista = [book1, book2, book3, book4]
for book in lista:
book.display()
jack_books = [book.title for book in lista if book.author == 'Jack']
print(jack_books)
book1 = Book('957-4-36-547417-1', 'Learn Physics','Stephen', 'CBC', 350, 200,10)
book2 = Book('652-6-86-748413-3', 'Learn Chemistry','Jack', 'CBC', 400, 220,0)
book3 = Book('957-7-39-347216-2', 'Learn Maths','John', 'XYZ', 500, 300,5)
book4 = Book('957-7-39-347216-2', 'Learn Biology','Jack', 'XYZ', 400, 200,6)
book1.display()
book2.display()
book1.in_stock()
book2.in_stock()
book1.sell()
book2.sell()
book3.sell()
我只想在“for”运行时显示带有 display() 函数的项目
def listas(self):
lista = [book1, book2, book3, book4]
for book in lista:
book.display *### I know It's wrong but it is exactly as the solution the teacher gives*
正如我在评论中所说,它正是解决方案,但我不知道我错过了什么,或者我可能必须创建一些东西或在下面调用它
就像这里一样
book1 = Book('957-4-36-547417-1', 'Learn Physics','Stephen', 'CBC', 350, 200,10)
book2 = Book('652-6-86-748413-3', 'Learn Chemistry','Jack', 'CBC', 400, 220,0)
book3 = Book('957-7-39-347216-2', 'Learn Maths','John', 'XYZ', 500, 300,5)
book4 = Book('957-7-39-347216-2', 'Learn Biology','Jack', 'XYZ', 400, 200,6)
book1.display()
book2.display()
book1.in_stock()
book2.in_stock()
book1.sell()
book2.sell()
book3.sell()´
对不起,如果我表达自己不好。希望你能理解。提前致谢
解决方案
缩进使这一点非常不清楚。此外,您正在定义一种方法,其中包含您正在定义的书籍,然后再定义最好的书籍。
我认为你想要做的是这个,但问题不是很清楚
class Book:
def __init__(self, isbn, title, author, publisher, pages, price, copies):
self.isbn = isbn
self.title = title
self.author = author
self.publisher = publisher
self.pages = pages
self.price = price
self.copies = copies
def display(self):
print(self.isbn, self.title, self.price, self.copies)
def in_stock(self):
return True if self.copies > 0 else False
def sell(self):
if self.in_stock():
self.copies -= 1
print("Number of copies now:", self.copies)
else:
print("No stock at the moment")
def listas(books):
for book in books:
book.display()
jack_books = [book.title for book in books if book.author == 'Jack']
print(jack_books)
然后,您需要定义书籍列表并将它们传递给函数 listas()
book1 = Book('957-4-36-547417-1', 'Learn Physics','Stephen', 'CBC', 350, 200,10)
book2 = Book('652-6-86-748413-3', 'Learn Chemistry','Jack', 'CBC', 400, 220,0)
book3 = Book('957-7-39-347216-2', 'Learn Maths','John', 'XYZ', 500, 300,5)
book4 = Book('957-7-39-347216-2', 'Learn Biology','Jack', 'XYZ', 400, 200,6)
book1.sell()
book3.sell()
listas([book1,book2,book3,book4])
推荐阅读
- c++ - 使用 C++ 从文件中提取长行
- javascript - Flask 将 html 元素作为 jsonify 发送
- typescript - 缩小泛型函数的类型
- ant-media-server - 是否可以减少 Ant-Media Server 中预览 png 文件的大小?
- c# - 加入会议结果“由于缺少凭据,身份验证失败。” 大蓝按钮?
- php - PHP Logger VPN / Proxy 通过 file_get_contents 和 preg_match 检测
- html - 如何使输入字段仅与可用空间一样宽?
- html - react js内联样式中是否有标签样式
- javascript - Bootstrap 4自定义文件上传未在标签中显示文件名
- r - 编织 Rmarkdown 文件时出错 - 安装 tidyverse 后发生