我是python的初学者,在写链表操作的时候,用a.add(10)往节点里添加10,它提示我:TypeError: add() missing 1 required positional argument: 'item'。我用的是python3.3。我怎么没看懂怎么回事呢?错在哪里了?求大神指点迷津。
class linkNote :
def __init__(self):
self._head = None
self._size = 0
def __len__(self):
return self._size
def __contains__(self,target):
curNode = self._head
while curNode is not None and curNode.item != target:
curNode = curNode.next
return curNode is not None
def add( self, item ):
newNode = _BagListNode( item )
newNode.next = self._head
self._head = newNode
self._size += 1
def remove(self, item):
preNode = None
curNode = self._head
while curNode is not None and curNode.item != item:
preNode = curNode
curNode = curNode.next
self._size -= 1
if curNode is head :
self._head = curNode.next
else:
preNode.next = curNode.next
def __iter__(self):
return _BagIterator(self._head)
class _BagListNode( object ):
def __init__( self, item ):
self.item = item
self.next = None
if __name__ == "__main__":
a = linkNote
python链表:TypeError: add() missing 1 required positional argument: 'item'。这个错误怎么改正?
答案:3 悬赏:60 手机版
解决时间 2021-12-22 14:09
- 提问者网友:骑士
- 2021-12-22 05:12
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-12-22 05:30
python 2.6用add很正常啊,add看起来没啥问题,到是别的函数有些小问题。
1. remove前判断下这个item是不是存在
2.if curNode is head : 应该是 if curNode is self._head
3._BagIterator(self._head) 是个什么东西? 自己写了一个
4. 下划线最好不要加,除非你知道它是用来干什么的.
5.a = linkNode() 而不是 a = linkNode
class linkNode:
def __init__(self):
self._head = None
self._size = 0
def __len__(self):
return self._size
def __contains__(self,target):
curNode = self._head
while curNode is not None and curNode.item != target:
curNode = curNode.next
return curNode is not None
def add( self, item ):
newNode = BagListNode( item )
newNode.next = self._head
self._head = newNode
self._size += 1
def remove(self, item):
preNode = None
curNode = self._head
if not item in self:
print item," is not exist."
return None
while curNode is not None and curNode.item != item:
preNode = curNode
curNode = curNode.next
self._size -= 1
if curNode is self._head :
self._head = curNode.next
else:
preNode.next = curNode.next
def __iter__(self):
curNode = self._head
while True:
yield curNode
if curNode.next is not None:
curNode = curNode.next
else:
break
class BagListNode( object ):
def __init__( self, item ):
self.item = item
self.next = None
1. remove前判断下这个item是不是存在
2.if curNode is head : 应该是 if curNode is self._head
3._BagIterator(self._head) 是个什么东西? 自己写了一个
4. 下划线最好不要加,除非你知道它是用来干什么的.
5.a = linkNode() 而不是 a = linkNode
class linkNode:
def __init__(self):
self._head = None
self._size = 0
def __len__(self):
return self._size
def __contains__(self,target):
curNode = self._head
while curNode is not None and curNode.item != target:
curNode = curNode.next
return curNode is not None
def add( self, item ):
newNode = BagListNode( item )
newNode.next = self._head
self._head = newNode
self._size += 1
def remove(self, item):
preNode = None
curNode = self._head
if not item in self:
print item," is not exist."
return None
while curNode is not None and curNode.item != item:
preNode = curNode
curNode = curNode.next
self._size -= 1
if curNode is self._head :
self._head = curNode.next
else:
preNode.next = curNode.next
def __iter__(self):
curNode = self._head
while True:
yield curNode
if curNode.next is not None:
curNode = curNode.next
else:
break
class BagListNode( object ):
def __init__( self, item ):
self.item = item
self.next = None
全部回答
- 1楼网友:詩光轨車
- 2021-12-22 06:34
你定义的函数,有两个必选参数x和y,一个可选参数other。
但是你调用函数是只给了一个2.3,所以会报错提示缺钱赋值给参数'y'的值
你照着书本抄,估计是把逗号抄成点号了,所以【2,3】成了【2.3】
所以要给两个参数就行。
比如:power(2,3)
- 2楼网友:冷風如刀
- 2021-12-22 06:19
a = linkNode
这句代码不是初始化一个实例,而是让a称为linkNode的别名而已。
要初始化一个实例,你需要多一对括号:
a = linkNode()
在Python 2.7.3上直接运行你的代码,再加上a.add(10),出错信息是:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
a.add(10)
TypeError: unbound method add() must be called with linkNote instance as first argument (got int instance instead)
也即解释器会判断第一参数的类型是否匹配。
没安装Python3,不知道你的错误信息是怎么出现的。如果Python 3没有做类型匹配判断的话,可能是因为解释器没有向其传递默认的self参数(因为没有),就把你传进去的10当成self,所以就少了item参数了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯