Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python 3,imp.reload似乎没有任何效果_Python 3.x_Ipython - Fatal编程技术网

Python 3.x Python 3,imp.reload似乎没有任何效果

Python 3.x Python 3,imp.reload似乎没有任何效果,python-3.x,ipython,Python 3.x,Ipython,我正在修改一个模块,其中包含一个类 当我%运行另一个使用IPython中mofied类的模块时,除非重新启动IPython,否则更改似乎不会生效 我已尝试使用imp.reload,但这没有帮助。例如,我已将以下代码放在模块顶部,但它似乎没有使用我修改过的类的更新版本(big_mysql_database_getter模块中的BigMySQLDatabaseGetter) 重新加载模块不会自动更新以前创建的所有引用,它只是重新定义模块内的所有内容 所以,如果你做了如下事情: from spam i

我正在修改一个模块,其中包含一个类

当我%运行另一个使用IPython中mofied类的模块时,除非重新启动IPython,否则更改似乎不会生效

我已尝试使用imp.reload,但这没有帮助。例如,我已将以下代码放在模块顶部,但它似乎没有使用我修改过的类的更新版本(big_mysql_database_getter模块中的BigMySQLDatabaseGetter)


重新加载模块不会自动更新以前创建的所有引用,它只是重新定义模块内的所有内容

所以,如果你做了如下事情:

from spam import eggs
imp.reload(spam)
print(spam.eggs is eggs)
您将得到
False
,因为
eggs
仍然引用旧类。同样,重新加载之前创建的实例是旧类的实例,而不是新类的实例:

import spam
e = spam.eggs()
imp.reload(spam)
print(isinstance(e, spam.eggs))  # False!
在您的情况下,您可以在重新加载模块后重新导入
BigMySQLDatabaseGetter
,或者不直接导入类,只需导入模块并使用
big\u mysql\u database\u getter.BigMySQLDatabaseGetter

import spam
e = spam.eggs()
imp.reload(spam)
print(isinstance(e, spam.eggs))  # False!