2010-02-13 54 views
2

我一直在为我的代码的一部分收到此错误。Python:UnboundLocalError帮助:分配前引用的本地变量

Traceback (most recent call last): 
File "./mang.py", line 1688, in <module> 
files, tsize = logger() 
File "./mang.py", line 1466, in logger 
nl = sshfile(list, "nl") 
UnboundLocalError: local variable 'sshfile' referenced before assignment 

我还没有把代码放在它的函数之间来回去。我想知道是否有人可以告诉我为什么python吐出这个错误? sshfile不是一个变量,它是一个类。

+2

如果您想要进行任何非野生猜测,您至少需要发布一些代码。 – 2010-02-13 00:57:19

+0

如果类定义在您使用它的范围中不存在,Python会将其称为局部变量。所以问题在于,不知何故,类定义没有发生。 – 2010-02-13 00:59:03

回答

1

您可能尚未导入包含sshfile定义的文件,或者您需要使用软件包名称来限定类名称。这取决于你如何导入它。

它来自哪个包?它在哪里定义?


更新

为别人读这篇文章,在评论的讨论,原来,问题是这个名字sshfile已经进一步向下用在功能变量名称后,像这样:

class sshfile: 
    pass 

def a(): 
    f = sshfile() # UnboundLocalError here 
    sshfile = 0 

a() 

解决方法是不使用隐藏需要使用的类名的变量名。

+0

它在记录器功能下定义。它不是一个包的一部分,它是我编码的一个函数。我不知道你的意思是通过限定类名。这段代码曾经工作得很好,直到我做了一些改变,但我从来没有碰过这部分代码。 – Incognito 2010-02-13 01:01:40

+2

这是你编码的功能?在你说这是一堂课之前。如果你可以将相关的代码行提取到一个新文件中,可能会创建一个10行最简单的自包含示例来演示错误并发布它,这将非常有用。删除所有不需要证明错误的代码。 – 2010-02-13 01:08:27

+0

我正要发布一些精简的代码,除了错误不会显示在精简版中。 – Incognito 2010-02-13 01:12:45

相关问题