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

cached_property 是 Python 3.8+ functools 中提供的一个装饰器,用于将类的方法缓存为属性。它可以把一个方法的返回值“记住”,在第一次访问时计算,之后直接返回缓存结果,避免重复计算开销。
作用与使用场景
当某个类属性的获取代价较高(比如涉及网络请求、复杂计算或文件读取),但又希望像普通属性一样通过点号访问时,cached_property 就非常有用。它结合了方法的惰性求值和属性的访问方式,并且只计算一次。
例如:
import functools
import time
class DataProcessor:
@functools.cached_property
def result(self):
print(“正在执行耗时操作…”)
time.sleep(2)
return “处理完成”
dp = DataProcessor()
print(dp.result) # 第一次:打印提示并等待
print(dp.result) # 第二次:直接返回,无延迟
Android 基础知识入门 pdf,介绍什么是Android、Android可以完成的功能、Android架构、Android应用程序框架、Android函数库等,从开始安装Android开始,到环境配置,到一步步编写复杂的应用程序,本书将带你了解基础但有内涵的Android入门知识。
0 与普通 property 的
property 每次访问都会重新调用方法,不缓存结果。cached_property 只在第一次调用时执行方法,后续访问直接返回已计算的值。适合用于不可变的、高成本的属性计算。
注意事项
缓存值存储在实例的 __dict__ 中,键名就是方法名。这意味着一旦被访问过,即使对象状态变化,值也不会自动更新。如果需要刷新缓存,可以手动从 __dict__ 中删除对应键:del dp.result
基本上就这些。对于需要“算一次,用多次”的属性,cached_property 是简洁高效的解决方案。
立即学习“”;
以上就是3中的cached_property函数是什么?的详细内容,更多请关注php中文网其它相关文章!
微信扫一扫打赏
支付宝扫一扫打赏
