从导入的类中出现UnboundLocalError
我有一些代码,结构如下:
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()
改成:
def setup_b():
global MyClass
# Do some stuff to get local_y
# ..
self.b = MyClass(local_y)
这样就能正常工作了。我只是搞不懂为什么会出现这个错误,因为我并没有通过实例化来修改 MyClass
。
注意:上面的例子是代码的一个基本版本,并不是导致错误的实际代码。有没有人知道这个错误的原因是什么?
1 个回答
5
在你没有展示的代码中,有地方把 MyClass
赋值了,这让编译器误以为它是一个局部变量,其实不是。