可以在for循环中定义自变量吗?之前没有定义它。 我对其用法感到困惑。下面是附加代码的链接。
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
答案 0 :(得分:2)
是的,可以。 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
隐式传递给方法时,它是“已定义”。