可以在 for 循环中定义一个 self 变量吗?



可以在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隐式传递给方法时,它是"定义的"。

最新更新