任何人都可以澄清以下行为。我在一段更大的代码中遇到了它,但我创建了一个最小的例子
文件untitled0.py
由以下代码组成:
import numpy as np
class A:
def f(self,x):
return np.diag(x)
文件untitled1.py
由以下代码组成:
import untitled0 as u0
import numpy as np
a=u0.A()
print a.f([1])
输出很简单,并且 [[1]] 打印在屏幕上。现在假设您已经创建了a
(A 的一个实例),计算工作量很大,并继续编写脚本并且不想一直重新计算。然后我通常做的是简单地注释掉创建行(因为对象 a 已经存在于你的 python shell 中),即:
import untitled0 as u0
import numpy as np
#a=u0.A()
print a.f([1])
但是,当我运行此脚本时,它会导致错误:
UMD has deleted: untitled0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\WinPython-64bit-2.7.5.1\python-2.7.5.amd64\lib\site-packages\spyderlib\widgets\externalshell \sitecustomize.py", line 523, in runfile
execfile(filename, namespace)
File "M:\....\untitled1.py", line 12, in <module>
print a.f([1])
File "untitled0.py", line 12, in f
return np.diag(x)
AttributeError: 'NoneType' object has no attribute 'diag'
由于某种原因np
没有在里面定义untitled0.py
。谁能解释发生了什么?