You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类函数缺失self位置参数求助:链表size函数报错

嘿,我来帮你揪出这个错误的根源!

问题核心原因

你遇到的TypeError: get_next() missing 1 required positional argument: 'self',本质是调用实例方法的方式错了——你大概率是直接用Node.get_next()这种类名调用的方式,而不是用Node的具体实例对象去调用。

因为get_next()是实例方法,定义里的self参数代表的是当前类的实例本身,Python会在你用实例调用方法时自动把实例传入self。但如果直接用类名调用,Python没办法自动填充这个self参数,自然就会报缺少参数的错。

为什么另一个方法没问题?

你说另一个用到get_next()的方法没报错,那肯定是那个方法里是用链表的节点实例来调用的,比如像这样:

current_node.get_next()

而你的size函数里,估计是写成了Node.get_next()这种错误的调用方式。

修复示例

假设你的size函数原本是错误写法:

def size(self):
    count = 0
    current = self.head
    while current is not None:
        count += 1
        current = Node.get_next()  # 这里就是错误根源!
    return count

只需要把调用方式改成用当前节点实例调用:

def size(self):
    count = 0
    current = self.head
    while current is not None:
        count += 1
        current = current.get_next()  # 用current这个实例调用get_next
    return count

另外先确认你的Node类里的get_next方法定义是正确的(应该带self参数):

class Node(object):
    def __init__(self, data=None, next_node=None):
        self.data = data
        self.next_node = next_node
    
    def get_next(self):
        return self.next_node  # 正确接收self参数,返回实例的next_node属性
总结

所有定义时带self的实例方法,都必须通过类的具体实例对象来调用,不能直接用类名调用,否则Python无法自动传入self参数,就会触发你遇到的这个错误。

内容的提问来源于stack exchange,提问作者marifkind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:36:57