zoukankan      html  css  js  c++  java
  • python @property 属性

         在绑定属性时,如果我们直接把属性暴露出去,显然不合适,是通过getter和setter方法来实现的,还可以定义只读属性,只定义getter方法,不定义setter方法就是一个只读属性:

    class Person(object):

      def __init__(self,name,sex,age,blood):
        self.name = name
        self.sex = sex
        self.age = age
        self._blood = blood

      #只读属性
      @property
      def name(self):
        return self._name


      #可写属性
      @name.setter
      def name(self,tname):
        self._name =tname

      #只读属性
      @property
      def sex(self):
        return self._sex


      #可写属性
      @sex.setter
      def sex(self,sex):
        if sex !='男' and sex !='女':
          raise ValueError('sex must be 男 or 女')
        self._sex =sex

      #只读属性
      @property
      def age(self):
        return self._age

      #可写属性
      @age.setter
      def age(self, age):
        if not isinstance(age, int):
          raise ValueError('age must be an integer!')
        if age < 0 or age > 100:
          raise ValueError('age must between 0 ~ 100!')
        self._age = age

      #只读属性
      @property
      def blood(self):
          return self._blood

      上面的blood是只读写属性,其它的name,sex,age都是可读可写属性。

        @property 广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性

  • 相关阅读:
    学习源代码时的笨方法
    初步学习pg_control文件之十五
    初步学习pg_control文件之十四
    初步学习pg_control文件之十三
    fsync体会
    初步学习pg_control文件之十二
    初步学习pg_control文件之十一
    初步学习pg_control文件之十
    初步学习pg_control文件之九
    JS与原生OC/Swift相互调用总结
  • 原文地址:https://www.cnblogs.com/shaosks/p/5626045.html
Copyright © 2011-2022 走看看