这是做什么的(Python)

dav*_*ave 1 python

我今天遇到了一段代码,看起来像这样:

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()做什么?

San*_*dri 8

像这样的一行:

self._vocabulary = self._vocabulary or self.keys()
Run Code Online (Sandbox Code Playgroud)

当你第一次初始化时检索值时,是什么叫做延迟初始化.所以,如果它从未初始化,self._vocabulary将是None(因为__init__导致的第二个元素的评价方法已经设置此值),or那么self.keys()将被执行,分配返回值self._vocabulary,从而初始化它将来的请求.

当第二次vocabulary被调用self._vocabularyNone,它将保持该值.