首页 > 解决方案 > 可以在 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

标签: pythonoop

解决方案


是的,它可以。 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,只是它按惯例用于引用实例方法的实例。(你甚至可以调用aas self,但是在self实例方法之外命名一个实例是非常规的。)


关于术语的另一个小问题:您说“可以定义自变量”。说self正在设置的属性而不是self正在定义的属性可能更准确;self当实例隐式传递给方法时,它是“定义的” 。


推荐阅读