首页 > 解决方案 > 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()´

对不起,如果我表达自己不好。希望你能理解。提前致谢

标签: pythonoop

解决方案


缩进使这一点非常不清楚。此外,您正在定义一种方法,其中包含您正在定义的书籍,然后再定义最好的书籍。

认为你想要做的是这个,但问题不是很清楚

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])

推荐阅读