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的话就是实例变量。
这是另一个大佬关于第一段的解释
第二段代码和第三段代码,不知其有何区别,暂且先记录在此处,待找到答案后再进行书写。
希望有知晓相关情况且恰好看到这篇博客的大佬,能够在评论区留言告知,非常感谢。