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

  • 相关阅读:
    【语言处理与Python】6.3评估
    win10同时安装 office2016和visio2016
    如何学好C语言(转)
    数据库索引
    Redis系列(二)如何接受客户端请求并调用处理函数
    Redis系列(三)事件处理细节分析及epoll介绍
    linux下查看某一个程序所使用的内存方法总结
    c++ 二级指针详解&&hiredis api
    C风格字符串
    twemproxy简介
  • 原文地址:https://www.cnblogs.com/shaosks/p/5626045.html
Copyright © 2020-2023  润新知