cached_property在Python 3.8+中用于将方法结果缓存为属性,首次访问时计算并存储结果,后续直接读取缓存,适用于高成本且不变的属性获取,如复杂计算或I/O操作,相比property避免重复执行,提升性能。
cached_property 是 Python 3.8+ 标准库 functools 中提供的一个装饰器,用于将类的方法缓存为属性。它可以把一
个方法的返回值“记住”,在第一次访问时计算,之后直接返回缓存结果,避免重复计算开销。
例如:
import functoolsclass DataProcessor:
@functools.cached_property
def result(self):
print("正在执行耗时操作...")
time.sleep(2)
return "处理完成"
dp = DataProcessor()
print(dp.result) # 第一次:打印提示并等待
print(dp.result) # 第二次:直接返回,无延迟
基本上就这些。对于需要“算一次,用多次”的属性,cached_property 是简洁高效的解决方案。