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

  • 相关阅读:
    ZeroMQ自查手册
    如何回答——请简述MySQL索引类型
    101. 对称二叉树
    66. 加一
    104. 二叉树的最大深度
    724.寻找数组的中心索引
    33. 搜索旋转排序数组
    快速排序
    Vue
    HTML
  • 原文地址:https://www.cnblogs.com/shaosks/p/5626045.html
Copyright © 2011-2022 走看看