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)
答
发生了什么事很简单,你在链表中定义的__init__
为:
def __init__(self):
这需要一个位置参数,即self
,但传入一个附加参数 - 一个列表。
+0
那么我能做些什么来解决它? – confusedstudent
+0
看看LinkedList是如何在Python中实现的。即使你已经修复了,还有很多其他的东西你也应该修复。 – Pythonista
做*不张贴图像的代码*。将问题本身的代码发布为格式化文本。 –
但是,你已经定义了你的'LinkedList'' __init__'只带'self',但你传递给它一个列表。另外,为什么你在'LinkedList'里嵌套'Node'? –
@ juanpa.arrivillaga我不太流利的python,我正在学习python中的数据结构课程,并且我从课本中拿出了一些代码,它嵌套了_Node,但是教师要求它第一个__init__被公开,下一个__init__被私有,这对我来说没有任何意义。 – confusedstudent