来自两个不同进口的__class__相等性检查

时间:2018-09-01 13:15:18

标签: python python-3.x python-importlib

我在python软件项目中有一个相当复杂的导入设置,在这里我无法避免使用importlib动态导入某些模块。 因此,我遇到了两个对象属于同一类的情况,但是由于它们是独立加载的,因此它们之间的相等性检查使我False

每个对象的obj.__class__的字符串表示形式都相同: <class 'drivers.MongoDriver'><class 'drivers.MongoDriver'>。 但是,在两个类上分别使用__eq__issubclass__eq__上的type()isinstance进行相等性检查。

我可以想到一种通过比较repr(obj.__class__)来进行相等性检查的骇人方法,但这似乎并不那么好。 另一种解决方案是“隐藏”指定一些唯一类ID的属性。

是否存在另一种(更好的)方式来在两个基本相同但由importlib独立加载的类之间进行相等性检查?

编辑: 重要提示:我不是在寻找避免两次导入该类的方法。 动态地重新导入项目的某些模块,以解决运行时这些模块中的代码更改。 然后,这些模块再次导入其他模块,例如我要进行相等性检查的驱动程序。即使不必重新导入更改模块使用的那些未更改模块会很好,但我知道,每当我动态导入一个模块时,所有依赖项也会重新导入。 (如果您有关于如何重新导入本身具有(静态)导入B的模块A的解决方案,但不必与A一起重新导入B,我会很高兴的。但这不是我要问的/查找的直接内容。

0 个答案:

没有答案