最近工作在调试python脚本时由于不太懂原理,被一个疑惑卡了一会

回到家复现了一下当时的情况,举个栗子说明:

目的是创建student对象时用多个hobby对象填充student的成员hobbies的元素

不懂就问,python类初始化时遇到的问题

为了看清楚点 没使用循环

不懂就问,python类初始化时遇到的问题

结果却成了这样,所有对象的hobbies成员都长成一样的了,而且追加了所有元素

不懂就问,python类初始化时遇到的问题

然后做了一个尝试,在初始化时append前每次都置空

不懂就问,python类初始化时遇到的问题

这样输出的结果符合预期

但是为什么呢?最近才开始接触python不久,没有系统了解过这里面的思想,所以不懂就问了

于是不死心的我又试了另一个清空list的方法,

不懂就问,python类初始化时遇到的问题

可以看到,第二次的赋值结果实际上覆盖了第一个对象的hobbies,结果不符合预期

不懂就问,python类初始化时遇到的问题

 

这又是为什么呢?百度了一下看到clear()能够清空所有已赋值过的变量?

 

这两个操作看起来这个List在类成员中,影响范围不仅仅在本对象吗?

相关文章: