是否可以制作一个使属性变得惰性的装饰器,当您尝试使用它访问它时不会评估它hasattr()
?我想出了如何让它变得懒惰,但hasattr()
让它过早地评估。例如,
class lazyattribute:
# Magic.
class A:
@lazyattribute
def bar(self):
print("Computing")
return 5
>>> a = A()
>>> print(a.bar)
'Computing'
5
>>> print(a.bar)
5
>>> b = A()
>>> hasattr(b, 'bar')
'Computing'
5
# Wanted output: 5