Python:__init __()需要1个位置参数,但有2个被给出

问题描述:

我正在做一个涉及类Linked_List中的各种函数的项目Linked_List,它是一个双向链表,部分代码涉及查找列表中的节点数。当我打印出来,但是我得到这个:Python:__init __()需要1个位置参数,但有2个被给出


Traceback (most recent call last) 
<ipython-input-7-8ba59f440a47> in <module>() 
17 
18 if __name__ == '__main__': 
19  x = Linked_List([1,2,3,4,5]) 
20  print(x) 
21 

TypeError: __init__() takes 1 positional argument but 2 were given 

我的代码如下:

class Linked_List: 
    class Node: 
     def __init__(self, val, prev, next): 
      self.val = val 
      self.prev = prev 
      self.next = next 
    def __init__(self): 
     self._header = self._Node(None, None, None) 
     self._trailer = self._Node(None, None, None) 
     self._header._next = self._trailer 
     self._trailer._prev = self._header 
     self._size = 0 
    def __len__(self): 
     return self._size 
if __name__ == '__main__': 
    x = Linked_List([1, 2, 3, 4, 5]) 
    print(x) 
+2

做*不张贴图像的代码*。将问题本身的代码发布为格式化文本。 –

+1

但是,你已经定义了你的'LinkedList'' __init__'只带'self',但你传递给它一个列表。另外,为什么你在'LinkedList'里嵌套'Node'? –

+0

@ juanpa.arrivillaga我不太流利的python,我正在学习python中的数据结构课程,并且我从课本中拿出了一些代码,它嵌套了_Node,但是教师要求它第一个__init__被公开,下一个__init__被私有,这对我来说没有任何意义。 – confusedstudent

发生了什么事很简单,你在链表中定义的__init__为:

def __init__(self): 

这需要一个位置参数,即self,但传入一个附加参数 - 一个列表。

+0

那么我能做些什么来解决它? – confusedstudent

+0

看看LinkedList是如何在Python中实现的。即使你已经修复了,还有很多其他的东西你也应该修复。 – Pythonista