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

问题描述 投票:-2回答:1

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

有什么建议?

python pyqt
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.