翼度科技»论坛 编程开发 python 查看内容

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

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
对某个属性进行访问的时候,不需要经过反复的计算再返回
  对属性的首次访问,将其值缓存起来,在其后的访问中,直接从缓存中取值,主要用来提高程序的性能
  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
可见文本内容只打印了一次
 

  

来源:https://www.cnblogs.com/shixiaogu/p/17420016.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具