Python:是否重新加载使用“从X导入Y”导入的组件Y?

在Python中,一旦我使用import X在解释器会话中导入了模块X,并且模块在外部发生了更改,我就可以使用reload(X)重新加载模块。然后这些更改在我的解释器会话中可用

我想知道,当我使用X导入Y中的从模块X导入组件Y时,这是否也是可能的

语句reload Y不起作用,因为Y本身不是模块,而只是模块内部的组件(在本例中是类)

是否可以在不离开解释器会话(或导入整个模块)的情况下重新加载模块的单个组件

编辑:

为了澄清,问题是从模块X导入类或函数Y,然后重新加载更改,而不是从包X加载模块Y

答复

从我的测试中,有标记的答案表明简单的重新加载(X),不起作用

据我所知,正确答案是:

importlib import reload中的

#python 2.7不需要此功能
导入X
重新加载(X)
从X导入Y

试验

我的测试如下(Python 2.6.5+bpython 0.9.5.2)

X.py:

def Y():
“打印”;测试1“;

比顿:

&gt&燃气轮机&燃气轮机;从X导入Y
&燃气轮机&燃气轮机&燃气轮机;打印Y()
测试1
&燃气轮机&燃气轮机>#编辑X.py以显示“X.py”;测试2“;
&燃气轮机&燃气轮机&燃气轮机;打印Y()
测试1
&燃气轮机&燃气轮机&燃气轮机;重新加载(X)#无法工作,因为X尚未导入
回溯(最近一次呼叫最后一次):
文件&quot&书信电报;输入&gt&引用;,第1行,in<模块>
名称错误:未定义名称“X”
&燃气轮机&燃气轮机&燃气轮机;导入X
&燃气轮机&燃气轮机&燃气轮机;打印Y()
测试1
&燃气轮机&燃气轮机&燃气轮机;打印X.Y()
测试1
&燃气轮机&燃气轮机&燃气轮机;重新加载(X)#对上一次加载无效“;从「;声明
&燃气轮机&燃气轮机&燃气轮机;打印Y()
测试1
&燃气轮机&燃气轮机&燃气轮机;打印X.Y()#表示刷新的第一个
测试2
&燃气轮机&燃气轮机&燃气轮机;从X导入Y
&燃气轮机&燃气轮机&燃气轮机;打印Y()
测试2
&燃气轮机&燃气轮机>#终于得到了我们想要的

发表评论