Python类中定义列表问题解析:实例化对象与可变属性的关系探讨

最近学习python,在类中定义列表时发现有几个问题

Python类中定义列表问题解析:实例化对象与可变属性的关系探讨

class List(object):
    list=[]
list1=List()
list1 的 list 把 '12' 进行了添加 。
list2=List()
print(list2.list)

这段代码我觉得应该输出为空列表,然而实际输出的却是['12']。

class List(object):
    def __init__(self):
        self.list=[]
list1=List()
list1.list.append('12')
list2=List()
print(list2.list)

这段代码实际输出为空

class List(object):
    def __init__(self,list=[]):
        self.list=list
list1=List()
list1.list.append('12')
list2=List()
print(list2.list)

这段代码实际输出为 ['12']

当实例化对象时,新的实例会获得类属行的一个引用。不能说这个引用是可读的,因为可读不可读是针对所引用的属性是否可变而言的。数字和字符串是不可变的数据类型,而 list 或者自定义对象等则是可变类型。

这是在网上找的一个大佬的解释,是关于第一段代码的解释

通过 id(test1.List) 能够发现,它与 id(test2.List) 的 id 值是相同的。
List 是在类之后紧接着定义的变量,所以被称作类变量,它类似于 Java 中的静态变量。
如果在__init__中的self.List的话就是实例变量。

这是另一个大佬关于第一段的解释

第二段代码和第三段代码,不知其有何区别,暂且先记录在此处,待找到答案后再进行书写。

希望有知晓相关情况且恰好看到这篇博客的大佬,能够在评论区留言告知,非常感谢。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

29阅读

外国教程python,python编程教学视频

2026年09月02日

23阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

19阅读

python库包教程,python 包

2026年09月02日

25阅读

python教程大全集,python教程600集

2026年09月02日

25阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

21阅读