自己试验两个age的关系,但是还是不太理解,请老师帮忙回答一下,谢谢!
来源:3-1 类的高级特性之property
慕桂英8162655
2020-01-17 18:12:51
2回答
时间,
2020-01-17
同学,你好。
1、创建实例后调用age1方法修改__age值时,会执行age1()中的程序进行条件判断,若条件成立则进行相应输入后执行return语句方法结束;若不成立,则将value的值赋值给self.__age。
2、@age2.setter允许对已用@property装饰的属性或方法赋值。
3、调用show_info输出结果时,会执行age2方法,返回self.__age的值
同学可以在程序的每行代码中打断点,使用debug模式运行,可以更好的理解执行顺序。
虽然同学将@property修饰的方法名和@xx.setter修饰的方法名改为不一样的结果也是不影响的(装饰器是系统封装好的,在内部也会执行一些操作从而达到相同的效果),但不会这么设置,setter装饰器必须在property的后面,且两个被修饰的属性(函数)名称必须保持一致。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
慕桂英8162655
提问者
2020-01-17
return "我叫{0},我的年龄{1}".format(self.name, self.age1) 补充一下,self.age1 改为age2程序也是可以正常运行,什么原因?
相似问题