我有一个(简化的)模块,类似这样:
import tkinter as tk
__outerVar = {<dict stuff>}
class Editor(tk.Frame):
...
def _insideFunction(self):
for p in __outerVar.keys():
<do stuff>
当我尝试实例化编辑器时,我得到了关于使用NameError: name '_Editor__outerVar' is not defined
的一个__outerVar
。我试着把“global __outerVar
”放在insideFunction
的最上面,尽管我不是在给__outerVar
写信,同样的错误。你知道吗
我肯定我只是误解了一些python范围规则。救命啊?你知道吗
第3.5页
你看到的是这个名字在起作用。从documentation:
据我所知,解决这个问题的唯一方法是将全局范围中的
__outerVar
重命名为不以双下划线开头的名称。你知道吗Python替换前面带有双下划线
__
的任何名称,以便模拟“私有属性”。本质上__name
变成_classname__name
。这称为名称损坏,只发生在类中,如文档所示in the docs:解决方法是不要使用
__name
名称,使用_name
之类的名称,或者只使用name
就足够了。你知道吗作为附录,在^{} 中规定:
所以,除非您设计的是子类名称冲突可能会引起问题的情况,否则不要使用双前导下划线。你知道吗
相关问题 更多 >
编程相关推荐