python - 我可以将 self 设置为被忽略的东西吗?
问题描述
我正在使用 Python 类中的代码编写代码。例如,像这样:
self.ulist = {}
for i in self.vlist:
if i not in self.ulist:
self.ulist[i] = {}
self.ulist[i]['appears'] = []
我测试代码的方式是有时我只想将代码片段复制到 Jupyter 或 ipython 中并运行代码。
我可以将 self 设置为什么,使其不会给出
name 'self' is not defined
错误?我知道您可以将 self 设置为任何东西,因为 self 是一个变量,我们可以将“self”设置为忽略它并将变量self.ulist, self.vlist
视为 的东西ulist, vlist
吗?
解决方案
实际上,任何用户定义的对象都可以(没有定义 a __slots__
)。Python 用户定义的对象很乐意接受您希望分配给它们的任何属性。或者,您也可以只使用一个SimpleNamespace
对象:
In [1]: from types import SimpleNamespace
In [2]: self = SimpleNamespace()
In [3]: self.vlist = {}
...: for i in self.vlist:
...: if i not in self.ulist:
...: self.ulist[i] = {}
...: self.ulist[i]['appears'] = []
...:
In [4]: self
Out[4]: namespace(vlist={})
至少有一个很好的开箱即用的印刷表示。
但同样,你总是可以这样做:
In [5]: class Foo: pass
In [6]: self = Foo()
In [7]: self.vlist = {}
...: for i in self.vlist:
...: if i not in self.ulist:
...: self.ulist[i] = {}
...: self.ulist[i]['appears'] = []
...:
In [8]: self
Out[8]: <__main__.Foo at 0x105fde048>
In [9]: self.vlist
Out[9]: {}
推荐阅读
- google-sheets-api - 读写配额是分开的还是共享的?
- java - 检票口解散异常:java.lang.IllegalArgumentException
- php - 在第 256 个字符处截断数据 - PHP 与 HFSQL 数据库,使用 PDO ODBC 试点
- c - 使 Skeeter (PostgreSQL/ZeroMQ) 在 Mac OSX 上失败;stdio.h 的问题?
- c++ - 如果 unique_ptr 需要存储删除器,它怎么能没有开销?
- php - 简单 XML 读取元素命名空间属性
- xamarin - 滚动到达gridview末尾时如何使用Xamarin android加载更多项目
- firebase - 在 Cloud Firestore 中查询集合时,我可以遍历对象类型文档字段吗?
- ios - 如何从此输出中获取用户价值
- ios - iOS - 在这个自适应布局的时代,是否仍然可以向 UITabBarController 动态添加项目?