zoukankan      html  css  js  c++  java
  • @property在python类中的应用

    1.在类中,有时需要限制输入的内容,可以用一个set来输入需要的内容,用get来取得输入的内容

    2.其实说白,上述所说的方法就是用来检查输入内容,让人们不能随心所欲的设置了。

    参见下面的例子:

    1 class Student(object):
    2     def get_score(self):
    3         return self.__score
    4     def set_score(self, value):
    5         if not isinstance(value, int):
    6             raise ValueError("score must be an integer!")
    7         if value < 0 or value > 100:
    8             raise ValueError("score must between 0 ~100")
    9         self.__score = value
    调用方法如下:
    >>>s = Student()
    >>>s.set__score(89)
    >>>s.get_score()
    89

    虽然上面的函数可以检查参数,但是略显复杂。没有直接调用属性的这么简单直接。

    有没有既检查参数,又可以用类似属性这样的简单的方法来访问类的变量。万能的python来说,这是可以解决的。。。。

    Python内置的@property装饰器就是负责把一个方法变成属性的。

    方法如下:

     1 class Student(object):
     2     @property
     3     def score(self):
     4         return self._score                     ###(getter方法)
     5     @score.setter                              ###(@property装饰器本身又创建了另外一个装饰器,@score.setter)
     6     def score(self, value):
     7         if not isinstance (value, int):
     8             raise ValueError("score must be an integer")
     9         if value < 0 or value > 100:
    10             raise ValueError("score must be between 0~100")
    11         self._score = value                    ###(setter方法)
    调用方法如下:
    >>>s = Student()
    >>>s.score = 60
    >>>s.score
    60

    ###利用@property还可以只定义只读属性,既只定义getter方法;

    setter方法可以认为是可写属性

    ### 注意@property的位置

  • 相关阅读:
    Oracle DB 备份恢复目录
    Oracle DB 在恢复目录中注册数据库
    Flex中动态生成DataGrid以及动态生成表头
    Flex报错归类(三)
    Flex报错归类(二)
    QuickServer
    Oracle DB 创建恢复目录
    Oracle DB 创建恢复目录所有者
    Oracle DB 使用DBCA创建单实例ASM数据库用作恢复目录数据库
    OCP-1Z0-053-V12.02-628题
  • 原文地址:https://www.cnblogs.com/lmt921108/p/7581945.html
Copyright © 2011-2022 走看看