python:导入的类在编辑,保存和重新导入时不会更改

时间:2015-08-12 16:43:04

标签: class python-2.7 python-import

我是Python新手并试图理解课程。不确定以下错误来自我的IDE(Spyder)的使用,或者是否是预期的行为。

我在文件message中定义了一个类C:\mydir\class_def.py。以下是该文件包含的内容:

class message:
    def __init__(self,msg1,msg2):
        self.msg1 = msg1
        self.msg2 = msg2

我有另一个脚本,我想执行代码,名为execute.py。在这个脚本中,我导入了类并创建了类对象的实例。以下是脚本execute.py中的代码:

import os
os.chdir('C:\mydir')
from class_def import message

message_obj = message('Hello','world')

到目前为止没有问题!

然后我将class_def.py编辑为以下内容:

class message:
    def __init__(self,msg1):
        self.msg1 = msg1

并修改execute.py以匹配新类,因此将一个输入移至message

   import os
   os.chdir('C:\mydir')
   from class_def import message

   message_obj = message('Hello')

我收到以下错误:

TypeError: __init__() takes exactly 3 arguments (2 given)

似乎Python保留旧版class_def.py并且不会导入新版本,即使它已保存。

这是正常行为还是Spyder做了一些有趣的事情?

1 个答案:

答案 0 :(得分:0)

如果您有.pyc文件,例如class_def.pyc,请将其删除。 我删除了您工作目录中的所有.pyc文件,然后重试。如果这不起作用,也许您没有使用您认为的模块?要确定尝试类似的事情:

import myModule
print myModule.__file__ #This will give you the path to the .pyc file your program loaded

#or 
import myModule
import os
print os.path.dirname(myModule.__file__)

尝试这些,这样您就可以确定您实际上正在使用您正在修改的文件。希望有所帮助!