python - 可以在 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
as self
,但是在self
实例方法之外命名一个实例是非常规的。)
关于术语的另一个小问题:您说“可以定义自变量”。说self
正在设置的属性而不是self
正在定义的属性可能更准确;self
当实例隐式传递给方法时,它是“定义的” 。
推荐阅读
- java - 从 S3 下载 Thymeleaf 模板
- javascript - 减少方法不清楚
- android - Jackson 未能反序列化 Kotlin 类
- mongodb - Mongodb:使用字段作为对象数组进行查找
- javascript - 如何使用 puppeteer 下载当前页面的 pdf
- c# - 如何在 Blazor 服务器端应用程序中从本地 Active Directory 实施身份验证?
- c# - 自动完成(字符串和整数)的一个时髦的东西
- c++ - Pytorch C++ RuntimeError:设备类型为 cuda 的预期对象,但在调用 _th_index_select 时获得了参数 #1 'self' 的设备类型 cpu
- django - 在 Django 模型中进行迁移时出现“外键不匹配”错误
- reactjs - 如果所有记录都已处理,则仅重新加载页面