我试图修改类运行时,它被导入到我的主程序中,并再次运行时本身。我正在导入同一个类,但这次它正在运行我的旧功能(在类修改之前)
def mydef()
{
from myclassfile import myclass
---------
---------
}
def mydef2()
{
from myclassfile import myclass
---------
---------
here, Modifying class by changing code in myclassfile
}
def mydef3()
{
from myclassfile import myclass
---------
---------
getting old functionality [before modification of class]
}
如果我按以下顺序调用类def:
mydef()
mydef2()
mydef3()
在mydef3()中变老的功能
我知道我认为它的速度优化是python的一部分,所以它阻止了再次编译同一个类并导入它,但是它应该编译,因为类已经被修改了。你知道吗
请帮帮我?你知道吗
在单个解释器会话中,
import
只导入一次模块,即使源文件已被修改。模块对象在第一次导入时存储在sys.modules
字典中,所有后续导入都使用该对象。您可以使用reload()
来重新加载模块,但是修改源文件可能是实现您想要做的事情的最困难的方法。如果你发布了更多关于你的实际目标的信息(例如,为什么你认为你需要修改磁盘上的源文件并重新导入),可能会有人建议一个更好的方法。你知道吗您可能希望研究子类化
MyClass
,而不是修改它。其他代码可能正在使用MyClass
,并且可能不知道您所做的修改。你知道吗例如
你知道吗我的模块.py地址:
你知道吗修改.py地址:
输出:
相关问题 更多 >
编程相关推荐