簡體   English   中英

python雙鏈表類

[英]python doubly linked list class

所以我有兩個類-一個是實現為雙鏈表的圖書庫,另一個是圖書節點的DLL節點類,它是這樣的:

class Book:
def __init__(self,name,author,dateadded,viewed = False, nextnode=None, prevnode=None):
    self._name = name
    self._author = author
    self._dateadded = dateadded
    self._viewed = viewed
    self._next = nextnode
    self._prev = prevnode

def __str__(self):
    """ Return string representation of book """
    outstr = ""
    outstr += self._name + " /n"
    outstr += self._author + "/n"
    outstr += self._dateadded
    return outstr

def read(self):
    """ Simulates the book being read & return string representation of the book """
    self._viewed = True
    outstr = "CURRENTLY READING: "
    outstr += self._name
    return outstr

我的圖書庫類處理一系列圖書節點,如下所示:

class BookLibrary:

""" A Doubly Linked List implementing a book library """

def __init__(self):
    self.size = 0
    self.head = None
    self.tail = None

我在我的add_book()方法中存在的問題-當我運行它時,我得到的錯誤是TypeError: add_book() takes 1 positional argument but 5 were given 這是函數本身,我真的不知道我哪里出錯了:(

def add_book(book):
    """ Add a book to the library in decreasing order of dateadded """
    n = Book(book)
    if self.size == 0:
        self.head = n
        self.tail = n
        current_book = n
        self.size += 1

    elif self.head._dateadded <= n._dateadded:
        n._next = self.head
        self.head._prev = n
        n._prev = None
        self.head = n
        self.size += 1

    elif self.tail._dateadded <= n._dateadded:
        self.tail._prev._next = n
        n._prev = self.tail._prev
        n._next = self.tail
        self.tail._prev = n
        self.size += 1

    elif self.size != 0:
        iterator = self.head._next
        while iterator._next is not None:
            if n._dateadded >= iterator._dateadded:
                n._prev = iterator._prev
                iterator._prev._next = n
                n._next = iterator
                iterator._prev = n
                self.size += 1
                break
            else:
                iterator = iterator._next
    return None

我真的很感謝任何幫助謝謝

這是我運行的代碼:

book_lib = BookLibrary()
book_lib.add_book("Harry Potter", "JK ROWLING", 19990101, False)

如果將所有要傳遞給add_book()的參數傳遞給class Book ,這就是您的問題。 它只期望一個參數book ,但是我假設您正在傳遞class Book期望的所有參數。

最好先實例化book對象,然后將它們直接傳遞到add_book方法中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM