这里有一个惊喜:
>>> class B:
... print(locals())
... def foo(self):
... print(locals())
... print(__class__ in locals().values())
...
{'__module__': '__main__', '__qualname__': 'B'}
>>> B().foo()
{'__class__': <class '__main__.B'>, 'self': <__main__.B object at 0x7fffe916b4a8>}
True
Run Code Online (Sandbox Code Playgroud)
似乎只是提到__class__了解析器明确检查了吗?否则我们应该得到类似的东西
NameError: name '__class__' is not defined
Run Code Online (Sandbox Code Playgroud)
实际上,如果您修改为仅检查密钥,即检查'__class__' in locals(),那么我们只self在预期范围内.
如何将这个变量神奇地注入范围?我的猜测是与此有关super- 但我没有使用super,那么为什么编译器在不需要时会在这里创建一个隐式闭包引用呢?
我创建了一个python3.sublime-build:
{
"path": "/usr/local/bin/python",
"cmd": ["python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
Run Code Online (Sandbox Code Playgroud)
并$ which python3返回,
/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)
可能安装了brew.
和Command+B返回此错误:
[Errno 20] Not a directory
[cmd: ['python3', '-u', '/path/to/dir/filename.py']]
[dir: /path/to/dir]
[path: /usr/local/bin/python]
[Finished]
Run Code Online (Sandbox Code Playgroud)
看了一些相关的帖子,还是没能解决。
我该如何解决问题?