2015-02-10 35 views
-2

我們都喜歡通過打印功能調試python代碼,我們嗎?我的問題是:如何從python stdlib調試abc模塊?嘗試使用打印功能(或sys.stdout的文件,等等),你會落得這樣的錯誤探索具有打印功能的abc模塊

TypeError: writeobject with NULL file 

原因是有點兒obviouse:非標準流不會在這一點上還沒有initilized。那麼如何探究這段代碼呢? 最重要的是,這裏聲明的類不是由內置的python3函數__build_class__構建的:檢查出this code,它與「常規」類一起工作,並且不與abc一起工作。

有什麼建議嗎?

+0

你爲什麼試圖調試一個標準模塊? – Kevin 2015-02-10 15:02:26

+0

我想了解abc模塊有什麼特別之處:爲什麼我的覆蓋'__build_class__'函數不適用於此處。 abc模塊本身工作還挺好 – 2015-02-10 15:05:06

+0

打開文件並寫入日誌消息。 – return42 2015-02-10 15:32:54

回答

0

好吧,我想通了。 abc模塊實際上有點特別:它涉及到python bootstrap序列,因此在代碼開始時,您已經完全構建並加載了模塊對象。爲了修補abc,只需使用imp.reload在運行時重建模塊。