我有以下代码
import imp
from my_module import MyClass
import my_module
imp.reload(my_module)
print(MyClass == my_module.MyClass) # Result is False
为什么MyClass
导入my_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
导入my_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