0

我在我的 python 软件项目中有一个相当复杂的导入设置,我没有绕过使用 importlib 动态导入一些模块。因此,我遇到了我有两个相同类的对象的情况,但是由于它们是独立加载的,所以它们之间的相等性检查给了我False.

它们对每个对象的字符串表示形式obj.__class__看起来相同: <class 'drivers.MongoDriver'>vs <class 'drivers.MongoDriver'>__eq__不过,对两个类、issubclass__eq__ontype()isinstancefail进行平等检查。

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

是否有另一种(更好的)方法如何在两个基本相同但已importlib独立加载的类之间进行相等检查?

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

4

0 回答 0