所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算。构造一个延迟计算属性的主要目的是为了提升性能

property
在切入正题之前,我们了解下property的用法,property可以将属性的访问转变成方法的调用。
class Circle(object):
def __init__(self, radius):
self.radius = radius
@property
def area(self):
return 3.14 * self.radius ** 2
c = Circle(4)
print c.radius
print c.area
可以看到,area虽然是定义成一个方法的形式,但是加上@property后,可以直接执行c.area,当成属性访问。
现在问题来了,每次调用c.area,都会计算一次,太浪费cpu了,怎样才能只计算一次呢?这就是lazy property
代码实现
class LazyProperty(object):
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
if instance is None:
return self
else:
value = self.func(instance)
setattr(instance, self.func.__name__, value)
return value
import math
class Circle(object):
def __init__(self, radius):
self.radius = radius
@LazyProperty
def area(self):
print 'Computing area'
return math.pi * self.radius ** 2
@LazyProperty
def perimeter(self):
print 'Computing perimeter'
return 2 * math.pi * self.radius
说明
定义了一个延迟计算的装饰器类LazyProperty。Circle是用于测试的类,Circle类有是三个属性半径(radius)、面积(area)、周长(perimeter)。面积和周长的属性被LazyProperty装饰,下面来试试LazyProperty的魔法:
>>> c = Circle(2)
>>> print c.area
Computing area
12.5663706144
>>> print c.area
12.5663706144
在area()中每计算一次就会打印一次“Computing area”,而连续调用两次c.area后“Computing area”只被打印了一次。这得益于LazyProperty,只要调用一次后,无论后续调用多少次都不会重复计算。
相关推荐:
SEO变现:如何通过SEO技术实现稳定收入,宁波网站就下拉通推广
seo搜索是什么,seo 搜索引擎 ,ai kesen
揭秘VPS SS用户数量,究竟有多少人使用?
SEO未来:如何在变革中抢占先机,迎接数字营销的新纪元,高要seo工作
为什么“搜狗不收录”会成为企业SEO的新挑战?,宁夏seo教程有哪些
seo经验是什么,seo进阶 ,ai练字笔 杭州
SEO门户:打造高效网站流量的关键利器,怎么做货源网站推广
seo是什么姓,seo什么意思中文意思 ,ai对策
做seo目的是什么,做seo的重要意义 黄山seo网站建设费用
SEO大神如何在激烈的互联网竞争中脱颖而出?,营销网络推广就选l火21星
seo指向是什么,seo指令和用法 顺义区大型网站建设检修
seo是什么文章,seo指的什么 ,ai创意标识
VPS防火墙的核心功能及其重要性深度解析
SEO课:让你从小白变成搜索引擎优化高手,郑州推荐抖音seo团队
无忧传媒机房怎么样啊?
seo推广什么意怿,seo推广什么意思 ,永杰ai打ai
seo复试都会提什么,seo面试技巧跟经验分享 食堂业务推广网站
SEO出来,打破流量瓶颈,助力企业增长的关键策略,seo优化网站外包公司
什么公司做seo,什么公司做司机可以买社保 智能家居网站建设流程
台州seo是什么免费,台州seo是什么免费的 太仓抖音营销推广方法
专业SEO助力企业在激烈市场竞争中脱颖而出,集团网站建设案例教程
服务器托管与VPS,深度解析二者的优劣与选择之道
seo渠道优化是什么,seo渠道推广怎么做 ,ai 00
SEO找词:如何精准找到高效关键词,提升排名和流量,荆州高端网站建设怎么收费
在线关键词优化,关键词优化分析查询 全网营销对比百度推广
VPS双重登陆,轻松实现方法与技巧
关键词优化的方法,关键词优化的方法有哪些 米线店推广营销方案
做seo要投入什么资源,seo做什么项目好 邢台网站推广推荐
SEO词的魔力:如何通过关键词优化打破流量瓶颈,黄浦网站建设哪里有
seo搜索排名优化是什么意思,seo 优化排名什么意思 绥化网站建设费用
SEO优化:提升网站流量的终极指南,雅安视频营销推广公司
SEO任何:如何通过精准优化让网站流量突破极限,厦门的网站建设公司
seo网站代码是什么,网站专业术语中seo意思是什么 ,类ai写作
SEO是什么意思?揭秘SEO的真正含义与重要性,网站抬头如何更适合优化
seo网页优化什么意思,seo网站优化必知的10个问答,问吧,【解决】百度不知道 ,AI写作第一案
香港VPS哪家最优秀?独家对比评测为你揭晓答案!
搬瓦工VPS系统选择攻略,哪个系统更适合你?揭秘最佳选项!
seo是什么化学元素,seo表示什么 ,小熊 ai
seo网站需要做什么,seo都需要做什么 ,ai画一个人在写作业的软件
武汉机房隔音效果怎么样?
为什么说seo这么重要,seo重要吗 ,ai厂用的什么机芯
ZBlog:开启你的个人网站新时代,轻松搭建与管理,江西关键词排名怎么引流
seo挖词用什么,利用seo怎么挣钱 速卖通推广跟营销
SEO师:如何在数字时代为企业赢得流量与销量,美团搜索关键词排名靠前
邢台学院机房位置怎么样?
seo用到什么软件,做seo需要用到什么软件 ,AI锤
西威电梯机房怎么样?
为什么要监控SEO效果,国家为什么要监控个人 ,ai辅助学习考核
UCMS:引领智慧医疗新时代,打造数字化健康未来,西宁网站建设说明
解决VPS延迟低网速问题,全面解析与实用解决方案!