【发布时间】:2009-08-17 07:15:58
【问题描述】:
是否可以制作一个装饰器,使属性变得惰性,当您尝试使用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
【问题讨论】:
标签: python decorator lazy-evaluation