zoukankan      html  css  js  c++  java
  • 使用@property

    @property装饰器就是负责把一个方法变成属性调用的,既能检查参数,又可以用类似属性这样简单的方式来访问类的变量

    class Student(object):
    
        @property
        def score(self):
            return self._score
    
        @score.setter
        def score(self, value):
            if not isinstance(value, int):
                raise ValueError('score must be an integer!')
            if value < 0 or value > 100:
                raise ValueError('score must between 0 ~ 100!')
            self._score = value。
    

    运行

    >>> s = Student()
    >>> s.score = 60 # OK,实际转化为s.set_score(60)
    >>> s.score # OK,实际转化为s.get_score()
    60
    >>> s.score = 9999
    Traceback (most recent call last):
      ...
    ValueError: score must between 0 ~ 100!
    

    练习
    请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution:

    # -*- coding: utf-8 -*-
    
    class Screen(object):
        @property
        def width(self):
            return self.__width     #注意这里一定要是私有属性
    
        @property
        def height(self):
            return self.__height
    
        @width.setter
        def width(self,value):
            self.__width=value      #注意这里一定要是私有属性
    
        @height.setter
        def height(self,value):
            self.__height=value
    
        @property
        def resolution(self):
            return self.__width*self.__height
    

    测试

    # 测试:
    s = Screen()
    s.width = 1024
    s.height = 768
    print('resolution =', s.resolution)
    if s.resolution == 786432:
        print('测试通过!')
    else:
        print('测试失败!')
    

      

  • 相关阅读:
    Python函数之冒泡算法
    Python内置函数之--open
    Python 基础5:内置函数一
    27、数组的操作
    26、字符串的操作
    25、求最大公约数和最大公倍数——循环
    24、输出九九口诀乘法表——循环
    查找【操作】
    04、结构体两种传参形式
    1、电脑联网小技巧:网络共享之台式机、笔记本、手机
  • 原文地址:https://www.cnblogs.com/zuxing/p/8974345.html
Copyright © 2011-2022 走看看