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

Pydroid编写Python链表调用show()报未定义NameError是什么原因

错误产生原因
  • 实例方法调用方式错误:Show是LinkedList类绑定的实例方法,不属于全局作用域,直接调用Show()时Python只会在全局命名空间查找对应名称,自然找不到匹配的定义,必须通过你创建的LinkedList实例对象b调用,正确写法为b.Show()。
  • 缩进错误破坏类结构:你写在size方法之后的三引号注释没有和类内其他方法保持同级缩进,顶格写的注释直接终止了LinkedList类的代码块,后续定义的Show、add方法实际上不属于LinkedList类,就算调整调用方式也会触发属性不存在的错误。
  • 额外注意:Python语法大小写敏感,你的方法定义名是首字母大写的Show,如果调用时写的是全小写show(),也会触发名称错误。
修复后可正常运行的代码
class Node:
    next = None
    data = None
    
    def __init__(self, data):
        self.data = data
        
class LinkedList:
    def __init__(self):
        self.head = None
        
    def Empty(self):
        return self.head == None
        
    def size(self):
        current = self.head
        count = 0
        while current:
            count += 1
            current = current.next
        return count
    
    # 打印链表内所有数据
    def Show(self):
        n = self.head
        while n:
            print(n.data)
            n = n.next
        else:
            print("empty")
            
    # 头插法添加节点
    def add(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node
        

b = LinkedList()
b.add(3)
b.add(3)
b.add(3)
print(b.size())
# Show方法本身已实现打印逻辑,不需要额外套print
b.Show()

内容的提问来源于stack exchange,提问作者Emmanuel C. O Peters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:09:04