假设我有:
BaseObjects我们将在下面调用 A 包
项目 B 作为依赖项安装BaseObjects并为中定义的某些类定义子类BaseOjects
项目 C 作为依赖项安装BaseObjects,但无法以任何方式访问项目 B
BaseObjects让我们调用:中定义的类之一Point。另一个类被称为Line以 2 个Point实例p1和 为属性p2。
包 B 实现了一个类PointB(Point)。因此,对象PointB也是 的实例BaseObjects.Point。
在与项目 B 相关的环境中,我创建了一个Line使用 2 个PointB对象的对象。我使用实现的特殊方法执行各种操作PointB。
我现在想要腌制这个Line对象,以便可以将其加载到项目 C 中。为此,我无法保留PointB实例。因此,我需要将它们“重新分类”为仅超类的类型。我愿意p1.__class__ = Point并且p2.__class__ = Point。我检查:isinstance(p1, PointB)计算结果为False,对于 也相同p2。
因此,我认为以这种方式腌制的对象可以从项目 C 中读取,因为它具有BaseObjects定义类的依赖项Point。
事实并非如此。当我在项目 C 中加载 pickle 文件时,它会查找我在项目 B 中定义子类的文件夹。但是,当我深入研究该对象时,我没有找到任何链接。所有对象都被称为类型BaseObjects.<class_name>
在我摆脱该对象对项目 B 的依赖的过程中出了什么问题?有没有办法查看对象的所有依赖关系?
慕的地6264312
相关分类