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方法变成属性赋值,这样,我们就拥有一个可控的属性操作了。

  • 相关阅读:
    Ionic Js十:加载动作
    Ionic Js九:列表操作
    Ionic Js八:头部和底部
    Ionic Js七:手势事件
    库文件
    驱动知识
    自启动总结
    学习笔记
    写脚本切换用户
    未找到arm-linux-gcc解决办法
  • 原文地址:https://www.cnblogs.com/AndyChen2015/p/7403139.html
Copyright © 2011-2022 走看看