Начало работы с OOP в Python - Вопрос - PullRequest
0 голосов
/ 01 августа 2020

Я новичок в OOP в Python, и у меня есть вопрос. Надеюсь, вы можете мне помочь: 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()

И я просто хочу показать элементы с функцией display (), пока выполняется «for» Здесь

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()´

Извините, если я плохо выразился. Надеюсь, ты понял. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Отступ делает это очень неясным. Также вы определяете метод, в котором есть книги, которые вы определяете, прежде чем определять книги, которые в лучшем случае нецелесообразны.

Я думаю то, что вы пытаетесь сделать, это то, но вопрос не очень ясен

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])
0 голосов
/ 01 августа 2020

В списке lista = [book1, book2, book3, book4] есть книжные объекты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...