class Example(tk.Frame):
def __init__(self, parent):
global p
p = 1.1
....
def looper(self):
if self.keys['Prior']:
p = p -.01
self.draw()
此代码以UnboundLocalError返回:本地变量' p'在分配前引用
我尝试将全局p / p = 1.1放在Class之外的主例程中,我得到了同样的确切错误。在某个地方,我一定是在误解事物。我认为全球意味着贯穿整个计划......这就是我想要的方式......设置一次并让它贯穿整个计划。我做错了什么?
答案 0 :(得分:1)
如果你从方法中指出它,你可以在课程定义之前定义p
(不建议):
p = None
class Example(tk.Frame):
def __init__(self, parent):
global p
p = 1.1
def looper(self):
global p
if ...
# modifying the global
p = 5
但是,请注意每个实例都会对其进行修改,除非您有单例模式或其他用途,否则它不会有意义。相反,您应该将p
作为实例变量:
class Example(tk.Frame):
def __init__(self, parent):
self.p = 1.1
def looper(self):
if self.keys['Prior']:
self.p = self.p -.01
self.draw()
# modifying the instance
my_instance = Example(..)
my_instance.p = 5