关于高级特性问题

关于高级特性问题

class set(object):
   def __init__(self,name,age):
       self.name = name
       self.__age = age
   @property
   def aaa(self):
       return self.__age

   @aaa.setter
   def aaa(self,va):
       if not isinstance(va,int):
           print("只能是整数")
           return 0
       if va < 0 or va > 100:
           print("不能是超出范围之外(0-100)!")
           return 0
       self.__age = va

   @property
   def eat(self):
       return '你好{},今年{}岁'.format(self.name,self.aaa)


   def __str__(self):

       return self.eat

if __name__ == "__main__":
   boot = set('小明',5)
   shool = boot.eat
   print(shool)
   print(boot)
   boot.aaa= 8
   shool = boot.eat
   print(shool)

老师@aaa.setter这一个,是什么意思呢?http://img1.sycdn.imooc.com//climg/5dfdbad309fc8e4c02150041.jpg

正在回答

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

1回答

同学,你好。@property可以将定义的方法“当做”属性访问,当属性设置为私有属性时,在外部不可以直接修改,因此可以同时使用@property和@*.setter,从而可以修改私有属性的值。

可以理解为:只有@property表示只读。同时有@property和@*.setter表示可读可写。

例:

class Person(object):
    @property
    def age(self):
        return self._height
    @age.setter
    def age(self, value):
        if not isinstance(value, int):
            raise ValueError("年龄只能是整数")
        if value < 0 or value > 100:
            raise ValueError("年龄只能介于0-100之间")
        self._height = value
 
d = Person()
d.age = 26
print(d.age)   # 26

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


  • 为学习而奋斗 提问者 #1
    老师,您好,如您所说的,d.age = 26这个会将26带入到 def age(self, value): if not isinstance(value, int): raise ValueError("年龄只能是整数") if value < 0 or value > 100: raise ValueError("年龄只能介于0-100之间") self._height = value 这里面进行判断,然后最后在返回到def age(self): return self._height 这里进行返回,最后再进行打印print(d.age ), 最后就会输出26是吗?
    2019-12-22 12:34:48
  • 好帮手慕美 回复 提问者 为学习而奋斗 #2
    同学,你好。同学的理解是正确的,祝学习愉快~~~~
    2019-12-22 15:35:54
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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