学生类默认为空列的问题

学生类默认为空列的问题

http://img1.sycdn.imooc.com//climg/5dfd82ce09db11e813550396.jpg

老师,第一个截图是我自己写的,但是最后出结果的时候,所有学生都选了8门课。第二个是在老师的指导下写的,文档中是老师给解释的两种的区别,但是我还是不太理解,烦请老师给细说一下,谢谢。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好。当调用Student类的初始化方法时,没有传递参数course对应的值,则会用默认参数空列表。在使用默认参数时,创建学生对象添加课程时,使用的均是默认参数中的列表,列表是可变数据类型,因此所有的student实例对象使用的是同一个列表,因此所有学生都选了8门课

例:self.na对应的id都是一样的

http://img1.sycdn.imooc.com//climg/5dfee2f70917a7aa03400531.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • xiaoyuan1 提问者 #1
    def __init__(self, s_number, name): self.s_number = s_number self.name = name self.selected = [] 老师,为什么这样写就行了呢
    2019-12-22 17:56:47
  • 好帮手慕美 回复 提问者 xiaoyuan1 #2
    同学,你好。在每次创建对象执行初始化方法时,会对selected重新赋值为空列表,每创建一个对象,selected为赋值空列表,再创建下一个对象时,selected依旧为空列表,因此是可以的。祝学习愉快~~~~
    2019-12-22 17:59:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师