首先,我知道这之前已经发布过,但是 A)建议不起作用或 B)建议是从命名空间中手动删除模块并像往常一样重新导入它。
我有以下模块结构
basedir/
pytools/
__init__.py
tools.py
setup.py
test.py
如果我在basedir
, 并导入pytools
并创建 class 的对象testcls
。类的实际属性可在 中找到tools.py
。testcls
有一个名为的方法,它现在testfunc
简单地打印出来:AAA
>>> import pytools
>>> test = pytools.testcls()
>>> test.testfunc()
AAA
假设我testfunc()
改为现在 print out BBB
。我这样做,并保存文件。然后我重新加载模块并重试,它没有打印出来BBB
:
>>> from importlib import reload
>>> reload(pytools)
>>> test = pytools.testcls()
>>> test.testfunc()
AAA
但是,如果我执行完全相同的过程,而是更改test.py
,将该文件作为模块导入,在其中编辑一个函数,然后重新加载它,它的行为与预期的一样:
>>> import test
>>> testvariable = test.testcls()
>>> testvariable.testfunc2()
AAA
# Change the function here
>>> from importlib import reload
>>> reload(test)
>>> testvariable = test.testcls()
>>> testvariable.testfunc2()
BBB
我真的不明白发生了什么,在这一点上真的很烦人。这也花费了我很多时间,但我现在更生气。
任何想法发生了什么?
版本:
蟒蛇:3.6.5
解释器:IPython,6.2.1