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

  • 相关阅读:
    预习非数值数据的编码方式
    预习原码补码
    C语言||作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    C语言|作业12—学期总结
    C语言|博客作业11
    第三章预习
  • 原文地址:https://www.cnblogs.com/AndyChen2015/p/7403139.html
Copyright © 2011-2022 走看看