UnboundLocalError из импортированного класса - PullRequest
0 голосов
/ 13 мая 2011

У меня есть некоторый код, который структурирован следующим образом

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)

Тем не менее, я запускаю с a = True в строке 5, он работает нормально, но когда я запускаю с 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 голосов
/ 13 мая 2011

Где-то в коде, который вы не показываете, вы присваиваете MyClass, что заставляет компилятор думать, что это локальная переменная, когда это не так.

...