@cached_property 会把每个实例的属性存储到实例__dict__中,实例获取属性时,将会优先从__dict__中获取,避免多次重复计算
例子:
class Foo():
@cached_property
def test(self):
print(‘运行test方法内部过程’)
return 3
def t(self):
print(‘运行t方法内部过程’)
return self.test
f = Foo()
print(f.test) 第一次将会调用test方法内部过程
print(f.test) 再次调用将直接从实例中的__dict__中直接获取,不会再次调用方法内部过程
print(f.t)