2012-10-25 33 views
0

在Python控制檯(Eclipse,Pydev)中,我執行一些數據加載。之後,我更改了對象方法的一些源代碼,並希望將新功能包含在數據對象中。數據加載速度很慢,所以我不想重新啓動整個腳本。在Python的控制檯上重新載入已存在對象的方法

是否有一種神奇的方式來更新我在源代碼中編輯的新實現更新對象方法?

How to reload the code of a method of class object in Python?說我不能以標準的方式做到這一點。

那麼你能想出一些方法來模擬該功能嗎?也許重新加載類定義,然後通過檢查__dict__或類似的東西來重新創建所有數據對象?理想情況下,這將盡可能自動和舒適。我需要考慮什麼?

回答

1

不幸的是,Python無法替代現有的對象實例。但是,IPython將此功能作爲擴展實現。您可以使用IPython作爲Python控制檯,或者僅爲您的開發環境重新實現此功能。

請參閱Autoreload of modules in IPython,and ipython docs

+0

我看到:)但是,它不會重新加載已經在內存中的對象的類? – Gerenuk

+0

它實際上會重新加載已經在內存中的類。嘗試從前面提到的SO問題使用ipython autoreload的例子。對我來說,它也適用於類和對象。 –