不懂setter

不懂setter

这个setter老师讲的突如其来,完全没搞懂有什么用,意义何在。姑且整理一下:

代码片段①:

@property

def age(self):

return self.__age

代码片段②:

@age.setter

def age(self,value):

………………

问题一:代码①存在的意义何在?不能和②合并为一个方法吗?

问题二:property里难道都是写返回该值吗?实际运用的时候如果我就是没法在这里面返回该值,那我能在property的片段里写什么?

正在回答

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

5回答

同学,你好。

1、当属性设置为私有属性时,在外部不可以直接修改,因此可以同时使用@property和@xxx.setter,从而可以修改私有属性的值。@xxx.setter装饰器允许对已用@property装饰的属性赋值

2、片断①中的return用于返回修改后的self.__age

3、self.__age=age表示在调用该方法时给self.__age赋值

4、若只使用@property,表示可以使方法以属性的方式调用。 对应的方法中可以写任意代码

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

  • 江民川 提问者 #1
    你说的这些我都听过了,但还是没明白setter的意义,既然上面第4点说对应的方法中可以写任意代码,为什么还要把setter部分的代码单独写一个函数?
    2020-05-07 15:00:54
  • 好帮手慕美 回复 提问者 江民川 #2
    同学,你好。 1、要修改私有属性时是需要使用@property和@xxx.setter这两个装饰器的,因此需要写两个方法实现,@xxx.setter用于写修改私有属性的逻辑,@property用于返回私有属性的值 2、第4条中是只使用@property,即不是修改私有属性时,该方法中可以写任意代码。 上述两种实现的是两种不同的功能。祝学习愉快~~~~
    2020-05-07 17:32:16
提问者 江民川 2020-05-06 15:35:45

又看了几遍视频。是“@property下面只能return、然后视实际需求的其他代码就写到@setter里去、而且property在上setter在下”吗?是这样吗?

提问者 江民川 2020-05-06 15:27:50

片段①的return到底意义何在,老师的演示里也只需要“改年龄后输出修改后的结果”,那property里的return是想干嘛?

请老师务必把回答里我所有阐述的想法都看一下,这节课我是真的完全没搞懂。

提问者 江民川 2020-05-06 15:25:28

http://img1.sycdn.imooc.com//climg/5eb26550096a75ad07700158.jpg其他地方老师的这个答疑我也看到了,但还是无法理解,这一章开头不是有过一个:

def set_age(self,age):

self.__age=age

这样写不就可以在私有的前提下有一个“口子”改属性值吗?何必又蹦出现在这么个毫无意义的繁琐的方法?

提问者 江民川 2020-05-06 15:17:45

有老师快点解答一下吗?这节课到底是在讲property还是在讲setter啊,我完全没搞懂这节课老师的教学目的,一头雾水。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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