python中area是什么意思_python之懒惰属性(延迟初始化)
原标题:python之懒惰属性(延迟初始化)
Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建的结果,然后每次调用的时候直接返回该结果。延迟初始化主要用于提高性能,避免浪费计算,并减少程序的内存需求。
1. 温故下property
property可以将属性的访问转变成方法的调用
可以看到,area虽然是定义成一个方法的形式,但是加上@property后,可以直接执行c.area,当成属性访问。
现在问题来了,每次调用c.area,都会计算一次,太浪费cpu了,怎样才能只计算一次呢?这就是lazy property
2.lazy property实现
实现延迟初始化有两种方式,一种是使用python描述符,另一种是使用@property修饰符
方法1:
结果'evalute'只输出了一次。在lazy类中,我们定义了__get__()方法,所以它是一个描述符。当我们第一次执行c.area时,python解释器会先从c.__dict__中进行查找,没有找到,就从Circle.__dict__中进行查找,这时因为area被定义为描述符,所以调用__get__方法。
在__get__()方法中,调用实例的area()方法计算出结果,并动态给实例添加一个同名属性area,然后将计算出的值赋予给它,相当于设置c.__dict__['area']=val。
当我们再次调用c.area时,直接从c.__dict__中进行查找,这时就会直接返回之前计算好的值了。
方法2:
这里与方法1异曲同工,在area()前添加@lazy_property相当于运行以下代码:
lazy_property(area)
lazy_property()方法返回_lazy_property,_lazy_property又会调用_lazy_property()方法,剩下的操作与方法1类似。
责任编辑:
python中area是什么意思_python之懒惰属性(延迟初始化)相关推荐
- python中area是什么意思_python中none表示什么
Q1:python里None 表示False吗 通常不这样表达.因为在python里定义find如果不为0和正数就是没有找到.并不一定是-1 一般是这样写if s.find("a" ...
- python基础教程:懒惰属性(延迟初始化)
Python 对象的延迟初始化是指,当它第一次被创建时才进行初始化,或者保存第一次创建的结果,然后每次调用的时候直接返回该结果.延迟初始化主要用于提高性能,避免浪费计算,并减少程序的内存需求. 1. ...
- python中area是什么意思_python – 与openCV 3中的contourArea的兼容性问题
我试图对findContours得到的轮廓进行简单的面积计算. 我的openCv版本是3.1.0 我的代码是: cc = cv2.findContours(im_bw.copy(), cv2.RETR ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python中异或怎么算_python 异或运算的前提_异或运算公式
Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...
- python中pandas是指什么_Python中的神器Pandas,但是有人说Pandas慢...
原标题:Python中的神器Pandas,但是有人说Pandas慢... 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤 ...
- Python中菱形继承的MRO顺序及property属性
Python中菱形继承的MRO顺序及property属性 文章目录 Python中菱形继承的MRO顺序及property属性 一.Python中菱形继承的MRO顺序 1. 单独调用父类的方法 2. 多 ...
- python中的多态是什么_Python中的多态
python中的多态是什么 Polymorphism is a concept of Object Oriented Programming, which means multiple forms o ...
最新文章
- R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表
- 读DL论文心得之SPP
- 组合总和Python解法
- C# ?. 判斷Null值
- 时间管理——你不可不知的3种时间管理方法
- python中如何输入矩阵_python - 如何向矩阵中添加向量_numpy_酷徒编程知识库
- php task todolist,Todolist--(4)登录
- python3高级 之 生成器
- linux静态反汇编工具,源码恢复反汇编静态分析工具IDA pro
- 添加类库引用后,命名空间出错的解决方案
- NLPIR java测试(没找到范例代码)
- java贪吃蛇代码_java贪吃蛇游戏实现代码
- chinapub matlab,MATLAB 2020从入门到精通
- java对接云之家群聊机器人
- Windows 10 运行python弹出windows应用商店
- wifi7000米远程连接服务器失败,【电视派控制设备连wifi总失败 怎么办?】PjTime.COM 应用技巧 创维...
- 用计算机弹歌夜空中最亮的星,计算机弹《夜空中最亮的星》 网友:学会了去撩妹...
- dp模式是什么意思_DP的完整形式是什么?
- 【超融合】超融合产品怎么选?
- pe重装系统后F盘无法打开系统拒绝访问解决方案
热门文章
- 50款可以替代桌面软件的在线服务
- 【BZOJ 3470】3470: Freda’s Walk 期望
- 宣化科技职业学院计算机哪个校区,宣化科技职业学院宿舍怎么样
- 使用pm命令安装或卸载apk,静默安装、卸载方法
- 使用Cobbler批量部署Linux和Windows
- 网管软件 LANDesk的配置(视频配截图)
- 公司不让使用XShell破解版后,我准备用这种方式!
- linux 深度 crossover,在Deepin V20(UOS)下使用crossover安装Kt交易师的方法
- Word 框里面打钩
- 0. DRF之软件开发模式CBV源码解析