我今天遇到了一段代码,看起来像这样:
class ClassName(object):
def __init__(self):
self._vocabulary = None
def vocabulary(self):
self._vocabulary = self._vocabulary or self.keys()
return self._vocabulary
Run Code Online (Sandbox Code Playgroud)
这条线到底在self._vocabulary = self._vocabulary or self.keys()做什么?
像这样的一行:
self._vocabulary = self._vocabulary or self.keys()
Run Code Online (Sandbox Code Playgroud)
当你第一次初始化时检索值时,是什么叫做延迟初始化.所以,如果它从未初始化,self._vocabulary将是None(因为__init__导致的第二个元素的评价方法已经设置此值),or那么self.keys()将被执行,分配返回值self._vocabulary,从而初始化它将来的请求.
当第二次vocabulary被调用self._vocabulary时None,它将保持该值.