关于类中的属性

关于类中的属性

在学生信息库这个项目中:
先定义了 包含学生信息的 字典 students
然后定义了一个类StudentInfo
然后定义了一个类函数add
所有的操作对象都是包含self的类属性
我给self.students 中添加了一个学生的信息
为什么最后输出 students,也有这个学生的信息
students 和 self.students 是互通的?

正在回答

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

2回答

同学,你好。

1、student是字典,是可变数据类型,在类中将student的值赋值给了实例属性student,因此修改实例属性,外部student的值也会地修改

2、字符串是不可变数据类型,因此不会修改

3、定义在函数内部的变量拥有一个局部作用域,局部变量只能在其被声明的函数内部访问。若要在函数中修改全局变量,需要在函数内部声明其为global。global需要在函数内部声明,若在函数外声明,则函数依然无法操作。

例:没加global之前,输出a的值为1和5,加了global之后,a的值都为1,因此实现了修改全局变量a的值

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

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

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


好帮手慕雪 2020-09-24 10:08:39

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

同学说的没错,这是同一个变量。祝:学习愉快~~~~  

  • 提问者 饿少 #1
    老师,我不能理解类中的属性和 类之外定义的变量的关系,既然是相同的,为什么类中要加self.➕变量名,我直接用变量名不就行了
    2020-09-24 10:17:10
  • 好帮手慕雪 回复 提问者 饿少 #2
    self.students是StudentInfo类的一个属性,用到实例属性时,类内部就要写做self.students。建议类的内部不要直接用外部的变量名,这样不利于面向对象编程
    2020-09-24 17:25:35
  • 提问者 饿少 回复 好帮手慕雪 #3
    老师,再次遇到问题,还是这个,既然能在类中对self.student进行修改,继而修改了外部变量student,那么global 存在的必要是什么,直接修改就完事咯
    2020-09-26 23:50:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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