可以在for循环中定义self变量吗? 它以前没有在任何地方定义过。我对它的用法感到困惑。下面附加代码的链接。
def initialize_nb_dict(self):
self.nb_dict = {}
for label in self.labels:
self.nb_dict[label] = defaultdict(list)
https://github.com/taspinar/siml/blob/master/notebooks/Naive_Bayes.ipynb
是的,可以。 self
是类实例;您可以创建和设置属性。 以同样的方式,您可以执行以下操作:
>>> class A: pass
...
>>> a = A()
>>> a.nb_dict = {}
>>> a.nb_dict[1] = 2
>>> a.nb_dict
{1: 2}
在方法initialize_nb_dict()
的范围内,self
是实例(如上面的a
(。
self
没有什么特别之处,除了约定用它来引用实例方法的实例。 (您甚至可以将a
称为self
,但是在实例方法之外self
命名实例是非常规的。
关于术语的另一个小点:你说"可以定义一个自我变量吗? 说正在设置self
的属性可能更准确,而不是正在定义self
;当实例作为self
隐式传递给方法时,它是"定义的"。