例:
import user
class Thing(object):
def doSomething(self):
u = user.User(1)
print u.name
>> UnboundLocalError: local variable 'user' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
但这有效:
class Thing(object):
def doSomething(self):
import user
u = user.User(1)
print u.name
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
编辑:
但这有效:
import user as anothername
class Thing(object):
def doSomething(self):
u = anothername.User(1)
print u.name
Run Code Online (Sandbox Code Playgroud)
您发布的代码缺少某些内容,因为它显示正常.
我猜你的真实代码看起来更像这样:
import user
class Thing(object):
def doSomething(self):
u = user.User(1)
print u.name
# ...
user = something
Run Code Online (Sandbox Code Playgroud)
问题在于,通过分配本地名称,user您已经说过user该函数的整个主体的局部变量 - 甚至是赋值之前的代码.这意味着,名user不不请参阅您的模块在功能,它指的是一个局部变量.尝试在为其分配值之前引用局部变量会导致您看到的错误.
使用本地导入是有效的,因为导入的一部分是赋值.ie:import user确保已导入"user"模块,并将该模块对象分配给名称user.
简单的解决方法是将本地变量的名称更改为不会影响导入的内容.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |