7

私は通常、開発中のコードをいじるために ipython を使用しているため、ipython にインポートした後にクラスのコードを変更するという状況に遭遇します。ipython を再起動せずに新しいクラス定義をリロードしたい。問題は、ipython の reload 関数がモジュールでのみ機能することです。

この問題の解決策を検索したところ、前のスレッドが見つかりました: how to reload a Class in python shell?

しかし、そこのアプローチに従いましたが、うまくいきませんでした。そのスレッドで機能する理由は、クラス名がたまたまモジュール名と同じだったため、sys.modules で見つけることができるため、削除できると思います。クラス名がモジュール名と異なる場合、そのアプローチは機能しません。

この問題の解決策があるかどうか疑問に思っています。ありがとう!

4

2 に答える 2

6

はい、まさにこの種のもののための「autoreload」と呼ばれる IPython 拡張機能があります。使い方のドキュメントはこちらです。

于 2012-08-23T12:25:03.840 に答える
-1

個々のモジュールをリロードすることもできます

例えば:

#reload every time  
import my_module
reload(my_module)

#reload a module recursively      
import deep_reload_my_module
dreload(deep_reload_my_module)
于 2014-09-07T10:44:54.607 に答える