让属性具备惰性求值的能力
  Hdj9iQhcP0rD 2023年11月02日 18 0

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

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

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


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

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

 


  

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   101   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   70   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   38   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   39   0   0 Python
Hdj9iQhcP0rD