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正则表达式常用函数详解:match()、search()、findall()和finditer()的区别与用法
今天学习了 Python 里有关正则表达式这方面的知识。对于正则表达式的语法,不做过多的解释,因为在网上有很多可供学习的资料。这里主要是对 Python 中常用的正...
-
JSON数据格式优势解析:轻量高效的前后端数据传输格式详解
在开发进程中,时常需要与其他系统进行数据交换。数据交换的格式包含 XML、JSON 等。JSON 作为一种轻量级的数据格式,其效率比 XML 要高。XML 需要大量...
-
Python字典详解:特性、创建方式与应用场景全解析
[id_11424713[id_9975210[id_1453432585]]9]id_1338777883] 在 Python 里,字典属于一种内置的数据结构。它...
-
Python教程:编写查找大文件的文件清理工具,轻松管理磁盘空间
[id_[id_1816442367]283327416] 以下是一个详细的 Python 教程,它会教你怎样去编写一个能够查找大文件的文件清理工具。这个教程将会被...
-
Python替代R作图:使用pandas、matplotlib和seaborn进行高效数据可视化
[id_8775086] [id_[id_204358991]95894101] 大多数生物信息工作者会使用 R 来进行作图。R 语言具备丰富的 package ,...

请小编喝杯咖啡吧!