【发布时间】:2015-07-18 19:58:34
【问题描述】:
我从 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() 不会导致任何问题。
谁能告诉我我做错了什么?我觉得它可能是非常明显的东西,但我无法弄清楚它是什么。
【问题讨论】:
-
对不起,我要问:分号是怎么回事?你在 python 中不需要它们。
-
你也应该把你的类名大写,因为我觉得绑定发生了一些奇怪的事情。
-
@NightShadeQueen 你是对的。我只是在 php 中编写脚本,所以我偶然添加了它们。感谢您的指正。无论如何,我在我的脚本中删除了它们,但错误保持不变。
-
@IanAuld python 中的类名是必需的,还是只是一个偏好?
-
它是样式指南的一部分,但在这种情况下,您要将类的名称重新绑定到该类的实例。 Python 应该如何区分
controller变量和controller类?