自己试验两个age的关系,但是还是不太理解,请老师帮忙回答一下,谢谢!

来源:3-1 类的高级特性之property

慕桂英8162655

2020-01-17 18:12:51

http://img.mukewang.com/climg/5e21880a09c3dfd605270547.jpg

写回答

2回答

时间,

2020-01-17

同学,你好。

1、创建实例后调用age1方法修改__age值时,会执行age1()中的程序进行条件判断,若条件成立则进行相应输入后执行return语句方法结束;若不成立,则将value的值赋值给self.__age。

2、@age2.setter允许对已用@property装饰的属性或方法赋值。

3、调用show_info输出结果时,会执行age2方法,返回self.__age的值

http://img.mukewang.com/climg/5e218d7c099a986b06930425.jpg

同学可以在程序的每行代码中打断点,使用debug模式运行,可以更好的理解执行顺序。

虽然同学将@property修饰的方法名和@xx.setter修饰的方法名改为不一样的结果也是不影响的(装饰器是系统封装好的,在内部也会执行一些操作从而达到相同的效果),但不会这么设置,setter装饰器必须在property的后面,且两个被修饰的属性(函数)名称必须保持一致。

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

0

慕桂英8162655

提问者

2020-01-17

return "我叫{0},我的年龄{1}".format(self.name, self.age1)  补充一下,self.age1 改为age2程序也是可以正常运行,什么原因?

0

0 学习 · 8160 问题

查看课程