一旦编译成功,类似乎就不再是可变的了。举个例子:
你知道吗测试模块.py地址:
class testClass:
def __init__(self,_A):
self.First=_A
def Method(self, X, Y):
print X
你知道吗测试脚本.py地址:
import testModule
tm=testModuleB.testClass(10)
tm.Method(3, 4)
死刑给了我
3
现在我更改Method
的参数列表:
def Method(self, X):
,我删除测试模块.pyc在我的剧本里
tm.Method(3)
结果,我得到了
TypeError: Method() takes exactly 3 arguments (2 given)
我做错什么了?为什么脚本不使用类的更新版本?我使用Canopy编辑器,但是我也看到了python.exe翻译。你知道吗
如果之前有人问过类似的问题,我会道歉的。我没有发现与此相关的问题。你知道吗
testModule
已加载到解释器中。删除pyc
文件不会改变任何事情。您需要执行reload(testModule)
,或者更好地重新启动解释器。你知道吗Python将代码对象加载到内存中;
class
语句在第一次导入文件时执行,一个类对象被创建并存储在模块名称空间中。后续导入将重用已创建的对象。你知道吗.pyc
文件仅在Python会话第一次导入模块时使用。替换文件不会导致模块重新加载。你知道吗可以使用^{} function 强制Python用磁盘上的新代码替换已经加载的模块。请注意,对类的任何和所有其他直接引用都不会被替换;
testClass
类的实例(tm
在您的例子中)仍然会引用旧的类对象。你知道吗在开发代码时,重启Python解释器并重新开始通常更容易。这样你就不必担心寻找所有的直接引用并替换它们。你知道吗
删除
.pyc
文件无法更改您的案例。当您第一次在解释器上导入模块时,它会被完全加载到解释器上,删除文件或修改不会改变任何东西。你知道吗最好重新启动解释器或使用内置的
reload
函数。你知道吗相关问题 更多 >
编程相关推荐