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

Python链表(Linked List)实现中self.head访问Node类属性疑问

Python链表属性访问问题解答

你给出的实现代码如下:

class Node:
    def __init__(self,data):
        self.data=data
        self.next=None

class LinkedList:
    def __init__(self):
        self.head=None

    def printlist(self):
        pointer=self.head
        while pointer is not None:
            print(pointer.data)
            pointer = pointer.next

l=LinkedList()
l.head=Node("Mon")
n2=Node('Tue')
n3=Node('Wed')

# 连接第一个节点到第二个节点
l.head.next = n2
n2.next = n3
l.printlist()

关于你的疑问,核心逻辑可以从两个点直接理解:

  • Python是动态类型语言,类的实例属性没有预先绑定的固定类型约束。LinkedList类里的self.head只是一个普通的实例变量,它的实际类型完全由你给它赋的值决定,不会被限制只能访问LinkedList类内部定义的属性。
  • 你在代码中显式执行了l.head=Node("Mon"),这一步直接把self.head赋值为Node类的实例对象。而每个Node类的实例在初始化时,都会通过__init__方法生成data和next两个自有属性,作为Node实例的self.head当然可以直接访问这两个属性。

你可以做个简单验证:如果把l.head=Node("Mon")改成l.head="测试字符串",再运行代码调用printlist方法就会报错,提示字符串对象没有data属性,这也反过来证明:变量能不能访问某个属性,只和它实际指向的对象类型有关,和它属于哪个类的属性没有任何关系。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:57:01