从模块导入的类与从模块访问的类不匹配

时间:2012-09-13 12:18:56

标签: python

我有以下代码

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

1 个答案:

答案 0 :(得分: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