您想要的是可能的,但是需要重新加载两件事……首先
reload(foo),但是您还必须这样做
reload(baz)(假设
baz是包含该
fromfoo import bar语句的模块的名称)。
至于为什么…
foo第一次加载时,将
foo创建一个
bar对象,其中包含一个对象。当您导入
bar到
baz模块,它存储到一个参考
bar。当
reload(foo)被调用时,
foo对象被消隐,并且该模块重新执行。这意味着所有
foo引用仍然有效,但是
bar已经创建了一个新对象…因此,已导入到某处的所有引用仍然是对
旧
bar对象的引用。通过重新加载
baz,使它重新导入新的
bar。
或者,您可以只
importfoo在模块中执行操作,并始终调用
foo.bar()。这样,无论何时
reload(foo),您都将获得最新的
bar参考。
注意:从Python 3开始,首先需要通过导入reload函数
from importlib import reload



