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)
  • 相关阅读:
    View传参数到Controller(asp.net mvc3) 中庸
    ExtJS实战(3)spring
    spring AOP(2)
    ExtJS实战(1)准备工作和界面赏析
    ExtJS+DWR+Spring+Hibernate开发HRMS(5)
    ExtJS实战(2)hibernate
    ExtJS实战系列前言
    Hibernate QBC高级查询
    ExtJS+DWR+Spring+Hibernate开发HRMS(4)
    ExtJS+DWR+Spring+Hibernate开发HRMS(3)
  • 原文地址:https://www.cnblogs.com/alantammm/p/13653077.html
Copyright © 2011-2022 走看看