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)