是否可以通过isinstance或类似的类型检查来处理我的腌制类?

时间:2013-04-22 10:52:05

标签: python class pickle typechecking isinstance

我有一个非常烦人的错误,我终于找到了它。

我使用(或更准确地说,已经使用过)一个独立的脚本来创建一个对象存储,之后我挑选了这个数据结构。然后,我可以在每次程序运行时使用反序列化数据初始化我的主程序。

但是,如果我使用类型检查,这就成了一个问题。在我做了pickle.dump()并得到这个数据结构后,我设置了它,以便我尝试检查一个对象的类型。不幸的是,我唯一可以检查它的是 new 重新加载我的类,Python认为它是不同的。

  

DEBUG:对象我是类型检查:>>夹具{名称:'前台',位置:'0',desc:'前台有一个标志,上面写着......'}<<
  DEBUG:通用GameObject:>> GameObject {name:'',location:'None',desc:'...'}<<

(你可以看到对象表示看起来非常相似。这是因为一个人从另一个继承了它的__repr__,即OUGHT是它的一个实例。)

  

DEBUG:我正在进行类型检查的对象类型:{class'chimai.chimai.objects.fix.Fixture'}
  DEBUG:通用GameObject的类型:{class'object.game_object.GameObject'}
  DEBUG:我正在进行类型检查的对象的MRO:({class'chimai.chimai.objects.fix.Fixture'},{class'chimai.chimai.objects.game_object.GameObject'},{type'object'} )
  DEBUG:通用GameObject的MRO :( {class'object.game_object.GameObject'},{type'object'})

(GameObject类的标识符略有不同;这来自我最初运行独立脚本的地方。)

  

DEBUG:腌制夹具类型ID:173671604
  DEBUG:在我的主程序中重新加载的Fixture类型ID:149507748

最终的结果是,我想不出一种方法来检查我的腌制数据。除非有人有任何天才提议,否则我想我会打鸭子。

1 个答案:

答案 0 :(得分:0)

AFAIK,以任何简单的方式都是不可能的;类型检查与在不同会话中检测的数据不兼容。在类型检查方面,我不是狂热者,但我喜欢什么有效。

相关问题