Python: Как работают списки внутри классов? - PullRequest
0 голосов
/ 01 мая 2020

Я пытался практиковаться с классами в Python, и я нашел некоторые области, которые смутили меня. Основная область заключается в том, как списки работы, особенно в отношении наследования.

Вот мой код.

class LibraryItem:
    def __init__(self, book_id, name):
        self.item_id = book_id
        self.name = name

class Library(LibraryItem):
    books=[]
        def all_books(books):
            bookslen = len(books)
            return bookslen

        def add_book(books):
            books.append(self.book_id)

То, что я пытаюсь заставить программу сделать, - это позволить мне сохранить экземпляр book_id и имени, которые затем могут быть добавлены в список книг [] с помощью метода add_books в дочернем классе Library.

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Я не думаю, что наследование - это то, что вы ищете здесь

У вас есть библиотека, и эта библиотека содержит список книг. будь проще.

class Library:

    ## creates the library
    def __init__(self):
        self.books = []

    ## returns number of books
    def number_of_books(self):
        return len(self.books)

    ## adds a book to the list of books 
    def add_book(self, book):
       self.books.append(book)


class Book:

    ## creates your book
    def __init__(self, item_id, name):
        self.item_id = item_id
        self.name = name


localLibrary = Library() # create the library
new_book = Book(1,"Harry Potter") # create the book
localLibrary.add_book(new_book) # add the book to the library
print(localLibrary.number_of_books()) # display the number of books

## output -> 1 book in the library
0 голосов
/ 01 мая 2020

Я думаю, это то, что вы пытаетесь достичь

class LibraryItem:
    def __init__(self, book_id, name):
        self.item_id = book_id
        self.name = name

class Library:
    def __init__(self):
        self.books = []

    def __len__(self):
        return len(self.books)

    def add_book(self, book):
        self.books.append(book.book_id)

Теперь вы можете создать экземпляр книги и добавить его в библиотеку:

book1 = LibraryItem(1,"To Kill a Mockingbird")
library = Library()
library.add_book(book1)
print(len(library ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...