我有一些结构如下的代码
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。
注意:上面的示例是代码的基本版本,而不是产生错误的实际代码。 有谁知道造成这个错误的原因是什么?
答案 0 :(得分:5)
在代码中的某个位置,您没有显示您正在分配给MyClass
,这使得编译器认为它不是本地变量。