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

时间:2018-05-25 14:12:34

标签: python pyqt

不幸的是,我在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'未定义

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

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