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

  • 相关阅读:
    C++ 函数模板&类模板详解
    C++ const修饰不同类型的用法
    C++ 引用Lib和Dll的方法总结
    C#查询本机所有打印机
    C#如何设置桌面背景
    C#使用Aspose.Words把 word转成图片
    查看IP占用
    查看IP占用
    C# Dictionary判断Key是否存在
    C# 只有小时和分钟的两个时间进行对比
  • 原文地址:https://www.cnblogs.com/shaosks/p/5626045.html
Copyright © 2011-2022 走看看