使用reload()时NameError(全局名称...未定义)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用reload()时NameError(全局名称...未定义)相关的知识,希望对你有一定的参考价值。

不幸的是,我在Python 2.7中重新加载模块时获得了NameError

from PyQt4 import QtCore, QtGui
class MyQThread(QtCore.QThread):
    import foo
    def __init__(self, parent=None):
        super(MyQThread, self).__init__(parent)

    def run(self):
        reload(foo)
        print("Reloaded")
        #...do something

当我使用时

thread = MyQThread()
thread.start()

我在shell中得到了这个:

NameError:未定义全局名称'foo'

有什么建议?

答案

import语句是一种赋值。通过在class语句中执行它,您将定义一个名为foo的类属性,该属性绑定到模块。你必须使用reload(MyQThread.foo)

也就是说,将import语句放在类定义中几乎没有什么好处;只需将import移至全球范围。

以上是关于使用reload()时NameError(全局名称...未定义)的主要内容,如果未能解决你的问题,请参考以下文章

NameError:未定义全局名称

调用异步任务芹菜时引发异常:“NameError:未定义全局名称*”

NameError:未定义全局名称“记录器”

NameError:未定义全局名称“PermissionError”(python 2.x)

NameError:未定义全局名称“QColor”

python NameError:未定义全局名称'__file__'