我有一個非常惱人的錯誤,我終於找到了它。是否有可能得到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