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

Python 从模块导入的类与从模块访问的类不匹配,python,Python,我有以下代码 import imp from my_module import MyClass import my_module imp.reload(my_module) print(MyClass == my_module.MyClass) # Result is False 为什么从my_module导入的MyClass不等于my_module.MyClass?问题的答案隐藏在重新加载模块的行中。在重新加载之后,python重新编译整个模块,重新创建其中的所有对象并加载它 因此,当重新

我有以下代码

import imp
from my_module import MyClass
import my_module

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

为什么从
my_module
导入的
MyClass
不等于
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

测试类相等性时,通常使用
is
运算符。