为什么定义私有__age变量以后,在show_info中没有把对应的变量改为self.__age

为什么定义私有__age变量以后,在show_info中没有把对应的变量改为self.__age

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

我注意到如果不设置方法age(self)程序就会报错,那么这个age方法作用是什么

正在回答 回答被采纳积分+1

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

1回答
慕之熠_灿烈 2019-08-28 11:20:24

同学,你好。

show_info( )中的self.age获取的就是描述符property下的age方法的返回值,没有修改为self.__age是因为面向对象编程中类的私有属性一般不暴露给外层,而是提供一个接口(就像实例中的age( )方法一样)供其他类调用,这也是程序开发一个规则(高度的封装性)。

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

age( )方法的用途就是为了提供一个可供调用的方法来获取私有属性的值,因直接操作私有属性是不太合乎面向对象编程的开发规则的。

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

  • 3三哥 #1
    是不是下面的self.age实际上指的是上面那里def 的age ,不像name那样,直接赋值到init里面的name那种啊? 我不知道我的理解对不对,麻烦老师解释一哈
    2019-09-28 10:08:39
  • 同学的理解是对的,继续加油!!
    2019-09-29 17:53:48
  • 那这里可以改成self.__age吗,我改成了self.__age也没有出错,是不是在类内部的方法可以访问本类的私有变量?
    2020-03-17 17:38:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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