cached_property在Python 3.8+中用于将方法结果缓存为属性,首次访问时计算并存储结果,后续直接读取缓存,适用于高成本且不变的属性获取,如复杂计算或I/O操作,相比property避免重复执行,提升性能。

cached_property 是 Python 3.8+ 标准库 functools 中提供的一个装饰器,用于将类的方法缓存为属性。它可以把一个方法的返回值“记住”,在第一次访问时计算,之后直接返回缓存结果,避免重复计算开销。
作用与使用场景
当某个类属性的获取代价较高(比如涉及网络请求、复杂计算或文件读取),但又希望像普通属性一样通过点号访问时,cached_property 就非常有用。它结合了方法的惰性求值和属性的访问方式,并且只计算一次。例如:
import functoolsimport time
class DataProcessor:
@functools.cached_property
def result(self):
print("正在执行耗时操作...")
time.sleep(2)
return "处理完成"
dp = DataProcessor()
print(dp.result) # 第一次:打印提示并等待
print(dp.result) # 第二次:直接返回,无延迟
家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l
与普通 property 的区别
property 每次访问都会重新调用方法,不缓存结果。cached_property 只在第一次调用时执行方法,后续访问直接返回已计算的值。适合用于不可变的、高成本的属性计算。注意事项
缓存值存储在实例的 __dict__ 中,键名就是方法名。这意味着一旦被访问过,即使对象状态变化,值也不会自动更新。如果需要刷新缓存,可以手动从 __dict__ 中删除对应键:del dp.result基本上就这些。对于需要“算一次,用多次”的属性,cached_property 是简洁高效的解决方案。
立即学习“Python免费学习笔记(深入)”;










