誰でも次の動作を明確にすることができますか? より大きなコードで遭遇しましたが、最小限の例を作成しました
ファイル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 シェルに既に存在するため)、つまり:
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
。誰が何が起こったのか説明できますか?