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

对某个属性进行访问的时候,不需要经过反复的计算再返回

  对属性的首次访问,将其值缓存起来,在其后的访问中,直接从缓存中取值,主要用来提高程序的性能

"""
属性惰性求值
这里介入描述符就可以实现
"""


class LazyProperty:
    def __init__(self, func):
        self.func = func

    def __get__(self, instance, owner):
        if instance is None:
            return self
        value = self.func(instance)
        setattr(instance, self.func.__name__, value)
        return value


class Valley:

    @LazyProperty
    def age(self):
        print("shi_xiao_gu_a")
        return 2 * 13


v = Valley()
print(v.age)
print(v.age)

output: 

  shi_xiao_gu_a
  26
  26

可见文本内容只打印了一次

 


  

posted on 2023-05-22 10:42  默玖  阅读(24)  评论(0编辑  收藏  举报

导航