Python:__ init __()需要1个位置参数但是2个被赋予

时间:2017-06-13 23:10:05

标签: python

我正在做一个涉及Linked_List类中各种函数的项目,这是一个双向链表,部分代码涉及查找列表中的节点数。当我打印出来时,我得到了这个:

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)

1 个答案:

答案 0 :(得分:0)

发生的事情很简单,您将链接列表中的__init__定义为:

 def __init__(self):

其中一个位置参数即self,但传递了一个附加参数 - 列表。