次のコードがあります
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
ですか?
次のコードがあります
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
ですか?
質問への回答は、モジュールをリロードする行に隠されています。このようなリロードの後、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