来自导入类的UnboundLocalError

时间:2011-05-13 10:30:21

标签: 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 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 个答案:

答案 0 :(得分:5)

在代码中的某个位置,您没有显示您正在分配给MyClass,这使得编译器认为它不是本地变量。