python - 未绑定(bind)本地错误 : local variable . 。赋值前引用

标签 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()不会引起任何问题。

有人可以告诉我我做错了什么吗?我有一种感觉,这可能是非常明显的事情,但我无法弄清楚它是什么。

最佳答案

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()

关于python - 未绑定(bind)本地错误 : local variable . 。赋值前引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495050/

相关文章:

python - Python-2.x 中的 super() 是否损坏?

python - 按照 Django 网站上的教程进行操作时出错

python - django-storages dropbox.stone_validators.ValidationError

python - 打乱列表并返回副本

python - 简单标记作为模板中的变量

Javascript 函数作用域和提升

javascript - 函数调用后的 jQuery 变量作用域?

c - 静态变量 - C

ruby - @instance_variable 在 ruby​​ block 内不可用?

c++ - 如何在函数中创建局部变量?