Python 从导入的类取消绑定LocalError
我有一些代码的结构如下Python 从导入的类取消绑定LocalError,python,global,Python,Global,我有一些代码的结构如下 from my.modules import MyClass Class AnotherClass(object): def __init__(a): #line 5 if a: setup_a() else: setup_b() def setup_a(): # Do some stuff to get local_x # .. self.a = MyClass(local_x) def
from my.modules import MyClass
Class AnotherClass(object):
def __init__(a): #line 5
if a:
setup_a()
else:
setup_b()
def setup_a():
# Do some stuff to get local_x
# ..
self.a = MyClass(local_x)
def setup_b():
# Do some stuff to get local_y
# ..
self.b = MyClass(local_y)
但是,我在第5行中使用a=True运行时,它运行得很好,但是当我使用a=False运行时,我会得到一个UnboundedLocalError
。我知道这通常是什么原因(修改全局变量),如果我将setup_b()更改为:
它工作正常。我只是不明白为什么会出现这个错误,因为我没有通过实例化来修改MyClass
注意:上面的示例是代码的基本版本,而不是产生错误的实际代码。
有人知道是什么导致了这个错误吗?在你没有显示的代码中的某个地方,你正在分配给MyClass
,这使得编译器认为它是一个局部变量,而不是。在你没有显示你正在分配给MyClass
的代码中的某个地方,使编译器认为它是一个局部变量,而不是。是的,就是这样。我们在self.b=MyClass(local_y)
下进行了一系列导入,其中一个错误地导入了MyClassYep就是这样。我们在self.b=MyClass(local_y)
下进行了一系列导入,其中一个错误地导入了MyClass
def setup_b():
global MyClass
# Do some stuff to get local_y
# ..
self.b = MyClass(local_y)