UnboundLocalError:在赋值之前引用的局部变量..

时间:2015-07-18 19:58:34

标签: python scope

我开始使用python。我正在尝试一个非常简单的类结构,但我得到一个错误。

这是我的剧本:

class controller:

    def initLocal(self):
        path = input('path:')
        local = local()
        local.path = path
        return local


class location:
    pass



class local(location):
    path = None



controller = controller()
local = controller.initLocal()  

这是我进入控制台的结果:

path:a
Traceback (most recent call last):
  File "path\to\test.py", line 21, in <module>
    local = controller.initLocal();    
  File "path\to\test.py", line 5, in initLocal
    local = local();
UnboundLocalError: local variable 'local' referenced before assignment

我搜索了这个错误,并发现它通常必须对不正确的范围做一些事情。但是,我不知道我在这里做错了什么。拥有与类同名的类实例是“非法的”吗?

如果我将initLocal()方法更改为:

def initLocal(self):
    path = input('path:')
    locale = local()
    locale.path = path
    return locale

它有效,但我找不到原因,因为controller = controller()不会导致任何问题。

有人可以告诉我我做错了什么吗?我觉得它可能是非常明显的东西,但我无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:1)

class Location:
    pass

class Local(location):
    path = None

class Controller:
    def initLocal(self):
        path = raw_input('path:')
        local = Local()
        local.path = path
        return local

controller = Controller()
local = controller.initLocal()