Python学习笔记(十八)@property
2024-10-19 07:39:57
# 请利用@property给一个Screen对象加上width和height属性,
# 以及一个只读属性resolution: # -*- coding: utf-8 -*-
class Screen(object):
@property
def width(self):
return self._width @width.setter
def width(self, value):
self._width = value @property
def height(self):
return self._height @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(s.resolution)
assert s.resolution == 786432, '1024 * 768 = %d ?' % s.resolution
@property
的实现比较复杂,我们先考察如何使用。把一个getter方法变成属性,只需要加上@property
就可以了,此时,@property
本身又创建了另一个装饰器@height.setter
,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作。
最新文章
- 开启MySQL日志
- HBase集群安装过程中的问题集锦
- Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
- C# 文件读取方法,自己写的例子,保存一下,备用
- 循序渐进Python3(一)-- 初识Python
- java protected 与默认权限的区别
- POJ 2533 Longest Ordered Subsequence(LIS模版题)
- java 23种设计模式及具体例子 收藏有时间慢慢看
- HDU 1754 单点更新,求区间最大值
- matlab和C/C++混合编程--Mex (六)参数传递
- C# Tips: Draw a data table in console
- Cocos2d-x Tiled地图编辑器(一)基本使用
- Struts Chain ClassCastException Aop
- [Swift]LeetCode899. 有序队列 | Orderly Queue
- MySQL之初识数据库
- Python之模块和包
- npm 切换源 nrm
- Ubuntu shutdown now 关机后 开机黑屏
- Machine Learning第十一周笔记:photo OCR
- Scrum Meeting NO.3
热门文章
- 软工实践 - 第三十次作业 Beta答辩总结
- Iterable,Iterator和forEach
- n元一维向量向左循环移位i的几种算法
- 7. 由一道ctf学习变量覆盖漏洞
- IDEA配置Java Web项目
- phpisset()和empty()函数区别
- TClientDataSet[5]: 读取数据
- Vue2.0 - 全局操作 Vue.set
- xheditor在线编辑器在.netMVC4中的使用
- 题解 P1765 【手机_NOI导刊2010普及(10)】