从导入的类中出现UnboundLocalError

0 投票
1 回答
739 浏览
提问于 2025-04-16 17:34

我有一些代码,结构如下:

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 赋值了,这让编译器误以为它是一个局部变量,其实不是。

撰写回答