zoukankan      html  css  js  c++  java
  • property

    @property可以将python定义的方法“当做”属性访问(不用添加()直接类实例.方法名),从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。

    • 只有@property表示只读。
    • 同时有@property和@被装饰的方法名.setter表示可读可写。
    • 同时有@property和@被装饰的方法名.setter和@被装饰的方法名.deleter表示可读可写可删除
      class Person():
          def __init__(self):
              self._age = None
          @property
          def get_age(self):
              return self._age
          @get_age.setter
          def set_age(self,age):
              self._age = age
      if __name__ == "__main__":
          p1=Person()
          p1.set_age=23
          print(p1.get_age) #23
           print(p1.age)#报错没有age属性,这里装饰过后 只能通过p1.get_age获取到age属性 所以一般我们命名用以下方法
      #不过一般我们不用上述那种命名,直接用属性名字定义方法名
      class Student():
          def __init__(self):
              self._score = None
          @property
          def score(self):
              return self._score
          @score.setter
          def score(self,value):
              ####   这里可以加入赋值逻辑
              if not isinstance(value,int):
                  raise ValueError('分数必须为整数')
              if value>100 or value<0:
                  raise ValueError('分数不是合理区间')
              else:
                  self._score = value
          @score.deleter
          def score(self):
              del self._score
      if __name__ == "__main__":
          stu1 = Student()
          stu1.score = 100
          print(stu1.score)
      del stu1.score
      print(stu1.score)#报错stu1没有score该属性 stu1.score
      = 101#报错分数不是合理区间

      如果不加@x.setter表示该属性为只读

    • class Person():
          def __init__(self):
              self._age = 26
          @property
          def age(self):
              return self._age
       
      if __name__ == "__main__":
          p1 = Person()
          print(p1.age)
          p1.age=27   #报错 AttributeError: can't set attribute
    print(stu1.score)
  • 相关阅读:
    ccnet 配置真折腾
    幻灯片效果代码(asp版本)
    Microsoft Office 服务器系统要求
    取数据库N到M的记录
    [心得]关于iframe页面滚动条。
    和我一起学Windows Workflow Foundation(2)让WF通过参数接收数据 [转]
    新闻图片效果
    AJAX
    和我一起学Windows Workflow Foundation(1)创建和调试一个WF实例 [转]
    关闭父窗口,打开新窗口
  • 原文地址:https://www.cnblogs.com/alantammm/p/13653077.html
Copyright © 2011-2022 走看看