假设我有:
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
相关分类