1. @property
  2. Python内置的@property装饰器就是负责把一个方法变成属性调用的:
  3.  
  4. class Screen(object):
  5. def isint(self,px):
  6. if not isinstance(px,int):
  7. raise ValueError('px must be an int')
  8. if px<0 :
  9. raise ValueError('px must be not a negative number')
  10.  
  11. @property
  12. def width(self):
  13. return self._width
  14.  
  15. @width.setter
  16. def width(self,value):
  17. self.isint(value)
  18. self._width=value
  19.  
  20. @property
  21. def height(self):
  22. return self._height
  23.  
  24. @height.setter
  25. def height(self,value):
  26. self.isint(value)
  27. self._height=value
  28.  
  29. @property
  30. def resolution(self):
  31. return self._width * self._height
  32.  
  33. @property给一个Screen对象加上widthheight属性,以及一个只读属性resolution
  34.  
  35. >>> s=Screen()
  36. >>> s.width=666
  37. >>> s.height=888
  38. >>> print(s.resolution)
  39. 591408
  40. >>> print('s.width * s.height =%d? ' % s.resolution)
  41. s.width * s.height =591408?
  42. >>> print('s.width * s.height =%d ' % s.resolution)
  43. s.width * s.height =591408
  44. >>>
  1. #题目: 请利用@property 给一个 Screen 对象加上 width 和 height 属性,以及一个只#读属性 resolution。
  2. #示例:
  3. class Screen():
  4. pass
  5. #test:
  6. s=Screen()
  7. s.width=1024
  8. s.height=768
  9. print(s.resolution)
  10. 786432
  11.  
  12. 答案:
  13.  
  14. class Screen(object) :
  15. @property
  16. def width(self) :
  17. return self._width
  18.  
  19. @width.setter
  20. def width(self,valuer) :
  21. if not isinstance(valuer,int):
  22. raise ValueError('score must be an integer')
  23. if valuer < 0 :
  24. raise ValueError('score must over zero')
  25. self._width=valuer
  26.  
  27. @property
  28. def height(self) :
  29. return self._height
  30.  
  31. @height.setter
  32. def height(self,number) :
  33. if not isinstance(number,int) :
  34. raise ValueError('score must be an integer')
  35. if number < 0 :
  36. raise ValueError('score must be an zero')
  37. self._height = number
  38.  
  39. @property
  40. def resolution(self):
  41. return self._width * self._height
  42.  
  43. s=Screen()
  44. s.width = 1024
  45. s.height = 768
  46. print(s.resolution)
  47. 1
  48. 2
  49. 3
  50. 4
  51. 5
  52. 6
  53. 7
  54. 8
  55. 9
  56. 10
  57. 11
  58. 12
  59. 13
  60. 14
  61. 15
  62. 16
  63. 17
  64. 18
  65. 19
  66. 20
  67. 21
  68. 22
  69. 23
  70. 24
  71. 25
  72. 26
  73. 27
  74. 28
  75. 29
  76. 30
  77. 31
  78. 32
  79. 33
  80. 解析:
  81. 其实这个答案整体很好理解的,思路也很清晰 结构也并不复杂,但是需要细心 我一开始就因为没细心所以造成了细节上的不必要的错误。
  82. 这段代码比较复杂的地方是第4行和16行,其实把
  83.  
  84. return self._width
  85. 1
  86. 换成
  87.  
  88. return self.kuandu
  89. 1
  90. 也可以,self.(可以命名成你想定义的名字),但是不能在原来代码的基础上直接去掉下划线,这样运行结果会进入死循环。同时建议自定义命名的话最好加上下划线,至于为什么这样做,我还需要再思考一下原理,最近休息不好脑袋萌萌的。如果想通了 ,我会更新出来的。如果对代码有其他不清楚的地方可以留下评论,我会尽量经常上来查看一下。

使用@property 添加width 和 height 属性的更多相关文章

  1. 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

    package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...

  2. DedeCMS文章页去img图片width和height属性

    方法一:正则匹配去除 打开include/ arc.archives.class.php,查找代码: //设置全局环境变量 $this->Fields['typename'] = $this-& ...

  3. 通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用 矩形的左上角坐标来标识,包含: 添加两个属性:矩形左上角坐标startX和startY。 两个构造方法: 带4个参数的构造方法,用于对startX、startY、width和height属性 初始化; 不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0 的矩形; 添加一个方法: 判断某个点是否在矩形内部的方法

    package b; public class Rect { Double width; Double height; public Double getWidth() { return width; ...

  4. 按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有确定位

    package com.hanqi.test; public class Rect { ; ; public double getWidth() { return width; } public vo ...

  5. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

  6. 初学canvas,遇到width和height显示问题和用excanvas.js兼容IE问题

    /*-----------------------ITEYE 祈祷幸福博客原创,转载请注明.-------------------*/ 第一次认真写技术博客文~~~若有不严谨的地方,望指正. 今天是第 ...

  7. IE6以下版本对元素width和height的处理与CSS标准的兼容性问题

    1.CSS使用width和height定义元素框的内容,Windows平台的IE6以下版本浏览器并未按照标准处理而是使用width和height来定义可见元素框的尺寸,IE/win使用width来描述 ...

  8. 网页Screen width、height、availWidth、availHeight属性

    *screen.width 功能:声明了显示浏览器的屏幕的宽度,以像素计. 语法:screen.width *screen.height 功能:声明了显示浏览器的屏幕的可用宽度,以像素计. 语法:sc ...

  9. jQueryEasyUI中DataGrid的height,width,fit,fitColumns属性

    height: 600, //不指定则默认垂直包裹,指定了则固定 width:1200,//不指定则水平100%平铺,指定了则固定 fit:false,//true:高度填充父窗体,忽略height属 ...

随机推荐

  1. python基础实现简单的shell sed 替换功能

    #coding:utf-8 from pygame.draw import lines import sys,os old_file = sys.argv[1] #接受外部设备上的参数 new_fil ...

  2. Oil Deposits(油田)(DFS)

    题目: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. G ...

  3. 手机视频APP将关闭 生态梦成空的三星如何自救?

    生态梦成空的三星如何自救?"> 三星如今的处境,只能用"屋漏偏逢连夜雨"来形容.继营收.利润.智能手机销量等大幅下滑之后,裁员也接踵而来,股价的下跌也自然在情理之中 ...

  4. Android API Levels

    Android API Levels(转) 在本文中 API的级别是什么? 在Android中使用API级别 开发者需要考虑的内容 应用程序的向前兼容性 应用程序的向后兼容性 平台版本和API级别的选 ...

  5. 从0到1,本地到远程git程序过程

    从0到1,本地到远程git程序过程 切记一定要在需要提交代码的文件夹下git init,既是你使用了什么 tortoisegit什么工具,或者你在idea环境下已经add了,但是仍然需要你在当前文件夹 ...

  6. 大马提权详细过程webshell到提权

    .在shell路径这一栏里输入服务器端cmd.exe对应的绝对路径,这里用我们刚刚上传上去的smallchao.exe 8.WINDOWS常见命令:net user 查看所有用户query user ...

  7. 嗨! Apriori算法

    Association Rule 一:项集和规则 1.1 认识名词: Association Rule : 关联规则 Frequent Itemsets : 频繁项集 Sequential Patte ...

  8. JMeter-WebService接口的测试

    前言 JMeter3.2版本之后就没有SOAP/XML-RPC Request插件了,那么该如何进行webservice接口的测试呢? 今天我们来一起学习一下怎么在3.2以后版本的JMeter进行we ...

  9. Windows 使用激活服务器激活操作步骤

    最近装了win10企业版系统,总结下激活步骤,激活后是正版,半年后需要重新激活,不介意的小伙伴可以试试,这不是重点,重点是企业版超级clean...... 服务器激活系统步骤,打开cmd或者xshel ...

  10. SQL Server 最小日志记录

    SQL Server之所以记录事务日志,首要目的是为了把失败或取消的操作还原到最原始的状态,但是,并不是所有的操作都需要完全记录事务日志,比如,在一个空表上放置排他锁,把大量的数据插入到该空表中.即使 ...