我的问题是以下两段代码是否由解释器运行相同:
class A(object):
def __init__(self):
self.__x = None
@property
def x(self):
if not self.__x:
self.__x = ... #some complicated action
return self.__x
而且更简单的方法是:
class A(object):
@property
def x(self):
return ... #some complicated action
也就是说,解释器是否足够聪明,能够缓存属性x
?
我的假设是,x
的值不会改变 - 找到它是困难的,但一旦找到了它,就没有再次查找的理由。
functools.lru_cache(maxsize=128, typed=False)
装饰器(也允许maxsize=None
参数)。 - Tobias Kienzler