今天我遇到了一段代码,看起来像这样:
class ClassName(object):
def __init__(self):
self._vocabulary = None
def vocabulary(self):
self._vocabulary = self._vocabulary or self.keys()
return self._vocabulary
self._vocabulary = self._vocabulary or self.keys() 这行到底在做什么?
请您参考如下方法:
这样一行:
self._vocabulary = self._vocabulary or self.keys()
就是所谓的惰性初始化,当你第一次获取值时它会初始化。因此,如果它从未被初始化,self._vocabulary 将是 None(因为 __init__ 方法已经设置了这个值)导致评估or 的第二个元素,因此 self.keys() 将被执行,将返回值分配给 self._vocabulary,从而为将来初始化它请求。
当 vocabulary 第二次被调用时,self._vocabulary 将不会是 None 并且它会保留那个值。
