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

时间:2025-04-23作者:admin分类:Python教程浏览:17评论:0

最近学习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的话就是实例变量

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

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

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

你可能想看:

猜你喜欢