0

次のコードがあります

import imp
from my_module import MyClass
import my_module

imp.reload(my_module)
print(MyClass == my_module.MyClass) # Result is False

MyClassインポートされた frommy_moduleが と等しくないのはなぜmy_module.MyClassですか?

4

1 に答える 1

1

質問への回答は、モジュールをリロードする行に隠されています。このようなリロードの後、python はモジュール全体を再コンパイルし、その中のすべてのオブジェクトを再作成してロードします。

MyClassそのため、モジュールをリロードすると、以前と同じオブジェクトではない、まったく新しいクラスが作成されます。

このコードを確認できます:

import imp
from my_module import MyClass
import my_module
print(MyClass == my_module.MyClass) # Result is True
imp.reload(my_module)
print(MyClass == my_module.MyClass) # Result is False
于 2012-09-13T12:18:56.347 に答える