【问题标题】:SyntaxError: non-default argument follows default argument; __init__ related [duplicate]SyntaxError:非默认参数遵循默认参数; __init__ 相关[重复]
【发布时间】:2018-06-30 10:26:47
【问题描述】:

这是我最后的选择。我到处搜索过,但总是与它被另一个函数或其他东西重写有关。我向你保证,没有其他函数使用这个 init 东西。我是初学者。

错误是我得到这个:SyntaxError:非默认参数遵循默认参数。它指向__init__([here]self, ...etcetc)

class book:

def __init__(self, bookId, nextBook=None, name, author, ageGroup):
    self.bookId = bookId
    self.nextBook = nextBook
    self.name = str(name)
    self.author = str(author)
    self.ageGroup = str(ageGroup)

def getInfo(self):
    return self.bookdId

def setInfo(self, bookId, bookName, authorName, ageGroup):
    self.bookId = bookId
    self.name = bookName
    self.author = authorName
    self.ageGroup = ageGroup

def getNextBook(self):
    return self.nextBook

def setNextBook(self,val):
    self.nextBook = val

class bookCollection:

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

def getSize(self):
    return self.size

def addBookToFront(self,bookId):
    newBook = book(bookId,self.head)
    self.head = newBook
    self.size+=1
    return True

def listAllBooks(self):
    curr = self.head
    while curr:
        print(curr.data)
        print(curr.name)


        curr = curr.getNextBook()

def deleteBook(self,value):
    prev = None
    curr = self.head
    while curr:
        if curr.getInfo() == value:
            if prev:
                prev.setNextBook(curr.getNextBook())
            else:
                self.head = curr.getNextBook()
            return True     
        prev = curr
        curr = curr.getNextBook()  
    return False

def addBookAtPosition(self, newBookId, position):
    counter = 1

    if position == 0:
        newBookId.setNextBook(self.head)
        self.head = newBookId

    else:
        book = self.head
        while book.getNextBook() is not None:
            if counter == position:
                newBookId.setNextBook(book.getNextBook())
                book.setNextBook(newBookId)
            book = book.getNextBook()
            counter = counter + 1

def removeBookAtPosition(self, removedBookId, position):
    counter = 1

    if position == 0:
        self.head = removedBookId.getNextBook()

    else:
        book = self.head
        while book.getNextBook() is not None:
            if counter == position - 1:
                book.setNextBook(removedBookId.getNextBook())

            book = book.getNextBook()
            counter = counter + 1

 #for reference: bookId, bookName, authorName, ageGroup
 Boy = book(1, Boy, Roald-Dahl, Teens)

【问题讨论】:

  • 我不知道你的搜索结果是什么样的,但这确实是我搜索时在谷歌上第一次点击non-default argument follows default argument。错误消息也非常明确地说明了问题所在。
  • 我确实提到我是初学者,所以特定的 qn 对我来说没有意义,更不用说错误消息了。由于我的知识有限,我没有发现提问者的代码有任何问题,阅读最佳答案对我来说毫无意义。对不起。

标签: python


【解决方案1】:

它在抱怨这条线:

def __init__(self, bookId, nextBook=None, name, author, ageGroup):

参数nextBook 有一个默认值,即None。 但参数 nameauthorageGroup 没有默认值。 这是解释器所禁止的,或者更准确地说,是解释器的解析器部分所禁止的。

要么不给 nextBook 一个默认值,要么给 nameauthorageGroup时间>。如果您只想为 nextBook 设置默认值,请将其设为最后一个参数,在 nameauthorageGroup之后>.

【讨论】:

  • 非常感谢!我现在明白了,谢谢。我没有意识到它必须是最后一个,另一个 qn 匿名用户将此 qn 标记为重复(经过理解,确实非常相似)措辞太高级了,谢谢你让它变得简单:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2019-12-14
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
相关资源
最近更新 更多