本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

python 类中列表 使用append出现实例重复的问题

发布于2021-07-25 07:48     阅读(1180)     评论(0)     点赞(29)     收藏(4)


案例

class Test:
	conList = []

a = Test()
b = Test()

a.conList.append(b)

运行以上代码,理想是实例a的conList中存在实例b
但是通过调试可以发现,实际情况是实例b的conLIst也执行了append
在这里插入图片描述

原因分析

可以看到,两个实例的conList都发生了改动
由于在调试器中,列表没有直接显示内存地址,这里分析内存

class Test:
    conList = []
    
a = Test()
b = Test()

print id(a.conList)
print id(b.conList)

可以发现两个实例的conList实际上使用了同一个地址
在这里插入图片描述

解决方法

可以使用以下方法重置实例的conList地址

a.conList = a.conList + [b]

这里就成功解决了
在这里插入图片描述
参考
[python]类与类中的列表
python类初始化参数赋值,实例直接调用append函数后,导致所有实例中变量改动

原文链接:https://blog.csdn.net/weixin_42033866/article/details/119015920



所属网站分类: 技术文章 > 博客

作者:你做的菜有点咸

链接:http://www.pythonpdf.com/blog/article/541/bd6799befbbdc241fdee/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)