zoukankan      html  css  js  c++  java
  • python3

    传统的绑定属性值,会把属性暴露出去,而且无法检查参数是否合法,如下:

    class Test(object):

      def  __int__(self,age):

        self.age = age

    为了检查参数的合法性,可以设置一个get_age()方法,和一个set_age()方法,如下:

    class Test(object):

      def get_age(self):

        return self.__age

      def set_age(self,value):

        if not instance(value,int):

          raise ValueError('age must be an integer...')

        if value <0 or value > 130:

          rasie ValueError('age must between 0~130')

        self.__age = value

    但是,上面的例子,调用方法又时略显复杂,没有直接用属性这么直接简单。

    python内置的@protery装饰器可以把一个方法变成属性来调用。

    class Test(object):

      @property

      def  age(self):

        return self.__age

      @age.setter

      def age(self,value):

        if not instance(value,int):

          raise ValueError('age must be an integer...')

        if value <0 or value > 130:

          rasie ValueError('age must between 0~130')

        self.__age = value

    s = Test()
    s.age = 100
    print(s.age)

    把一个getter方法变成属性,只需要加上@property就可以,同时,@property本身又创建了另一个装饰器@age.setter,负责把一个setter方法变成属性赋值,这样,我们就拥有一个可控的属性操作了。

  • 相关阅读:
    Python字符串
    MySQL触发器
    MySQL 1418报错解决办法
    数据库下载
    补码与反码
    二、八、十六进制之间的转换
    this 指向
    作用域 var 词法分析 arguments
    事件绑定的3种方式
    清浮动方法小结
  • 原文地址:https://www.cnblogs.com/AndyChen2015/p/7403139.html
Copyright © 2011-2022 走看看