我是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做了一些有趣的事情?
答案 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__)
尝试这些,这样您就可以确定您实际上正在使用您正在修改的文件。希望有所帮助!