课程
/后端开发
/Python
/python进阶
为什么不用再把grade属性加进这面?,而是可以直接在装饰器里面用?
2019-09-01
源自:python进阶 6-7
正在回答
因为__init__()只有初始化的时候调用,如果初始化的时候(Student('Bob', 59)传入的是59得到C,那没问题如果初始化之后修改分数(s.score = 60),那么这里不会调用__init__(),就无法成为B所以修改分数后再获取成绩(s.grade)时,会重新判断分数得到新的成绩B
我试了一下你的想法,发现返回全部都是C,这个是init,初始化用的,判断也是score初始值,重新定义时score时,这个判断不会重复判断了,文中的是调用时才会执行判断的
s = Student('Bob', 59,'C')
当然也可以不输入
s = Student('Bob', 59)
但是这样若想获得grade,则必须通过计算,还是要用本章讲的方法
当然也可以编写s.grade()方法,单此时grade不再是属性,而是方法
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计