博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用@property 添加width 和 height 属性
阅读量:7006 次
发布时间:2019-06-27

本文共 2343 字,大约阅读时间需要 7 分钟。

@propertyPython内置的@property装饰器就是负责把一个方法变成属性调用的: class Screen(object):     def isint(self,px):        if not isinstance(px,int):             raise ValueError('px must be an int')        if px<0 :             raise ValueError('px must be not a negative number')         @property     def width(self):         return self._width          @width.setter     def width(self,value):         self.isint(value)         self._width=value              @property     def height(self):         return self._height          @height.setter     def height(self,value):         self.isint(value)         self._height=value              @property     def resolution(self):         return self._width * self._height @property给一个Screen对象加上width和height属性,以及一个只读属性resolution: >>> s=Screen()>>> s.width=666>>> s.height=888>>> print(s.resolution)591408>>> print('s.width * s.height =%d? ' % s.resolution)s.width * s.height =591408? >>> print('s.width * s.height =%d  ' % s.resolution)s.width * s.height =591408  >>>
#题目: 请利用@property 给一个 Screen 对象加上 width 和 height 属性,以及一个只#读属性 resolution。 #示例: class Screen(): pass #test: s=Screen() s.width=1024 s.height=768 print(s.resolution) 786432答案:class Screen(object) :    @property    def width(self) :        return self._width    @width.setter    def width(self,valuer) :        if not isinstance(valuer,int):            raise ValueError('score must be an integer')        if valuer < 0 :            raise ValueError('score must over zero')            self._width=valuer    @property    def height(self) :        return self._height    @height.setter    def height(self,number) :        if not isinstance(number,int) :            raise ValueError('score must be an integer')        if number < 0 :            raise ValueError('score must be an zero')        self._height = number    @property    def resolution(self):        return self._width * self._heights=Screen()s.width = 1024s.height = 768print(s.resolution)     123456789101112131415161718192021222324252627282930313233解析: 其实这个答案整体很好理解的,思路也很清晰 , 结构也并不复杂,但是需要细心 , 我一开始就因为没细心所以造成了细节上的不必要的错误。 这段代码比较复杂的地方是第4行和16行,其实把return self._width1换成return self.kuandu1也可以,self.(可以命名成你想定义的名字),但是不能在原来代码的基础上直接去掉下划线,这样运行结果会进入死循环。同时建议自定义命名的话最好加上下划线,至于为什么这样做,我还需要再思考一下原理,最近休息不好脑袋萌萌的。如果想通了 ,我会更新出来的。如果对代码有其他不清楚的地方可以留下评论,我会尽量经常上来查看一下。

 

转载于:https://www.cnblogs.com/FWF1944/p/10878220.html

你可能感兴趣的文章
Yosimate Upgrade
查看>>
mvn install把代码安装到本地仓库
查看>>
linux中联合ps -ef与kill -9杀掉进程
查看>>
BPM领域常用的两款工作流JBPM和CCBPM的对比
查看>>
Source Insight加载源码
查看>>
单源最短路径(Dijkstra算法,贪心算法的应用)
查看>>
我的新居
查看>>
jQuery 教程
查看>>
[Linux]命令集锦
查看>>
Microsoft visio 2010之简单使用
查看>>
Mysql 中 DATETIM和TIMESTAMP 数据类型的选择比较(收藏)
查看>>
我的友情链接
查看>>
netty源码分析系列——ByteBuf&UnpooledByteBuf
查看>>
【学习笔记7】Linux常用命令4 - 文件搜索命令
查看>>
CDI(Weld)高级<6> Specialization and alternatives
查看>>
OS企业版app发布问题
查看>>
df、du、fdisk命令基本使用
查看>>
2016-05-27
查看>>
深入了解java HashMap的死循环
查看>>
WordPress数据库管理插件:WP-DBManager
查看>>