为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不用再把grade属性加进这面?

为什么不用再把grade属性加进这面?https://img1.sycdn.imooc.com//5d6b833d0001ce8c03050023.jpg,而是可以直接在装饰器里面用?

正在回答

3 回答

因为__init__()只有初始化的时候调用,
如果初始化的时候(Student('Bob', 59)传入的是59得到C,那没问题
如果初始化之后修改分数(s.score = 60),那么这里不会调用__init__(),就无法成为B
所以修改分数后再获取成绩(s.grade)时,会重新判断分数得到新的成绩B

0 回复 有任何疑惑可以回复我~

我试了一下你的想法,发现返回全部都是C,这个是init,初始化用的,判断也是score初始值,重新定义时score时,这个判断不会重复判断了,文中的是调用时才会执行判断的

0 回复 有任何疑惑可以回复我~

因为grade是计算得到的,如果加在这里面,就需要一开始就输入,例如

s = Student('Bob', 59,'C')

当然也可以不输入

s = Student('Bob', 59)

但是这样若想获得grade,则必须通过计算,还是要用本章讲的方法

当然也可以编写s.grade()方法,单此时grade不再是属性,而是方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么不用再把grade属性加进这面?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信