让属性具备惰性求值的能力

打印 上一主题 下一主题

主题 937|帖子 937|积分 2811

对某个属性进行访问的时候,不需要经过反复的计算再返回
  对属性的首次访问,将其值缓存起来,在其后的访问中,直接从缓存中取值,主要用来提高程序的性能
  1. """
  2. 属性惰性求值
  3. 这里介入描述符就可以实现
  4. """
  5. class LazyProperty:
  6.     def __init__(self, func):
  7.         self.func = func
  8.     def __get__(self, instance, owner):
  9.         if instance is None:
  10.             return self
  11.         value = self.func(instance)
  12.         setattr(instance, self.func.__name__, value)
  13.         return value
  14. class Valley:
  15.     @LazyProperty
  16.     def age(self):
  17.         print("shi_xiao_gu_a")
  18.         return 2 * 13
  19. v = Valley()
  20. print(v.age)
  21. print(v.age)
复制代码
output: 
  shi_xiao_gu_a
  26
  26
可见文本内容只打印了一次
 

  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表