永发信息网

python链表:TypeError: add() missing 1 required positional argument: 'item'。这个错误怎么改正?

答案:3  悬赏:60  手机版
解决时间 2021-12-22 14:09
我是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 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
全部回答
你定义的函数,有两个必选参数x和y,一个可选参数other。 但是你调用函数是只给了一个2.3,所以会报错提示缺钱赋值给参数'y'的值 你照着书本抄,估计是把逗号抄成点号了,所以【2,3】成了【2.3】 所以要给两个参数就行。 比如:power(2,3)
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参数了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
i want to buy a new computer _____i haven
观察下面图形,用一句话表达它的含义。(3分
小轿车加挂斗应该用什么驾照
广州软通动力怎么样
Listen! The bird
桩基静载试验 荷载多少
螺纹胶272与262有什么区别
不小心给别人打晕了,怎么办,我是跑那,还是
小智从第一季到第五季有多少只神奇宝贝
为什么说章子怡是公厕
云南拍婚纱照多少钱
无锡到常熟的汽车开车时间
杭州和诚之宝汽车销售服务有限公司是新开的店
张家港客运站坐车到淮安哪个站下车
ZhanQixiong,afishingboatcaptainret
推荐资讯
昆山市城市管理行政执法大队二中队办公地址在
为什么在拍拍申请实名认证说什么此银行卡暂不
请问谁谁接到过城管谈话通知书,要怎么处理?
大小辛庄村委会办公地址在什么地方?我要处理
桦甸去牡丹江开车过路费多钱
无处话凄凉什么意思
南充到广元有多少公里
到上海旅游回家带什么
宏村派出所地址在哪?我要去那里办事
下列实验现象描述错误的是A.镁在空气中燃烧,
网上预定的火车票订单超时未支付可不可以再下
宜兴离上海有多远
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?