我有一个非常恼人的错误,我终于找到了它。是否有可能得到isinstance或类似的类型检查与我的腌制课程一起工作?
我使用(或更准确地说,已经使用过)一个独立的脚本来创建对象的存储,之后我腌制这个数据结构。每次运行程序时,我都可以用反序列化的数据初始化我的主程序。
但是,如果我使用类型检查,这会成为一个问题。在完成pickle.dump()并获得这个数据结构之后,我设置了它,以便检查对象的类型。不幸的是,我唯一可以检查的是新的重新加载我的类,Python认为它是不同的。
DEBUG:对象我的类型检查:>>灯具{名称:“前台”,位置:“0”,说明:“前台有一个牌子,上面写着......”} < <
DEBUG:一个通用的游戏对象:游戏对象>> {名称: '',位置: '无',说明: '...'} < <
(你可以看到,对象表示看起来非常相似。这是因为它从另一个继承了它的__repr__
,即OUGHT是它的一个例子。)
DEBUG:对象的类型,我的类型检查:{类的chimai.chimai.objects.fix.Fixture'}
DEBUG:普通游戏对象的类型:{类的objects.game_object.GameObject'}
DEBUG:对象类型检查的MRO:({class'chimai.chimai.objects.fix.Fixture'},{class'chimai.chimai.objects.game_object.GameObject'},{type'object'} )
DEBUG:MRO针对通用游戏物体:({类 'objects.game_object.GameObject'},{类型 '对象'})
(游戏对象类具有略微不同的标识符;这个来自哪里我最初运行独立脚本)
DEBUG:腌制的灯具类型的编号:173671604
DEBUG:灯具类型的ID作为重新加载在我的主要程序:149507748
的最终的结果是,我想不出一种方式来检查我的腌制数据。除非任何人有任何天才的建议,我想我会打鸭子。
Yuo没有检查相同的对象*。您正在比较'fix.Fixture'实例和'game_object.GameObject'。显然这些不是同一类型的对象。我认为你误解了你的代码的作用,这与Pickle有什么关系。 – 2013-04-22 10:57:06
也许我不够清楚。 'isinstance()',给定一个'fix.Fixture'的实例,并且'game_object.GameObject'类返回'False'。这就是为什么我调查了这两个。 – 2013-04-22 11:05:35
而'fix.Fixture'应该是'game_object.GameObject'的子类吗? – 2013-04-22 11:06:08