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

Python实现LinkedList触发缺少必填位置参数TypeError报错

报错根因

触发TypeError: missing 1 required positional argument的核心错误是实例化Node类的写法不符合Python语法规则:

  • Python创建类实例的标准写法为类名(初始化参数),该写法会自动完成新实例的内存分配,并将新实例作为self参数传入类的__init__方法完成初始化。
  • 你写的Node.__init__(element)是直接调用未绑定的构造方法,既没有生成新的Node实例,也没有传入__init__方法要求的第一个self参数,因此会抛出参数缺失的报错。

除了这个直接触发报错的问题,你的代码还有3处会导致后续运行异常的设计问题:

  • Node类中将element、nextNode定义为类属性,所有Node实例会共享这两个值,违背链表每个节点独立存储数据、后继指针的设计逻辑
  • LinkedList类中将head定义为类属性,所有LinkedList实例会共享同一个头节点,应该改为实例属性
  • prettyPrint方法存在三个逻辑漏洞:未处理空链表的边界情况、循环终止条件会漏掉最后一个节点的输出、直接将int类型的节点值与字符串用+拼接会触发类型错误
修正后可运行代码
class Node:
    def __init__(self, element: int):
        # 实例属性,每个节点独立持有
        self.element = element
        self.nextNode = None

class LinkedList:
    def __init__(self):
        # 头节点改为链表实例的属性,不同链表实例互不干扰
        self.head: Node = None
        
    def insert(self, element: int):
        if self.head is None:
            # 正确实例化Node的写法
            currentNode = Node(element)
            self.head = currentNode
        else:
            currentNode = self.head
            while currentNode.nextNode is not None:
                currentNode = currentNode.nextNode
            newNode = Node(element)
            currentNode.nextNode = newNode 
    
    def prettyPrint(self):
        currentNode = self.head
        print("Current Linked List\n")
        # 处理空链表边界
        if currentNode is None:
            print("Empty linked list")
            return
        # 遍历所有节点,包含最后一个
        while currentNode is not None:
            print(f"{currentNode.element} ---> ", end="")
            currentNode = currentNode.nextNode
        print("None")
                
def main():
    linked_list = LinkedList()
    linked_list.insert(1)
    linked_list.insert(9)
    linked_list.insert(2)
    linked_list.insert(18)
    linked_list.insert(5)
    linked_list.insert(8)
    linked_list.prettyPrint()

if __name__ == '__main__':
    main()

运行上述代码的输出结果为:

Current Linked List

1 ---> 9 ---> 2 ---> 18 ---> 5 ---> 8 ---> None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:27:30