如何在ipython中重新加载类定义

时间:2012-08-23 05:50:07

标签: ipython

因为我经常使用ipython来开发正在开发的代码,所以我遇到了在将其导入ipython之后更改类的代码的情况。我想重新加载新的类定义而不重新启动ipython。问题是ipython中的重载功能仅适用于模块。

我搜索了这个问题的解决方案并找到了一个上一个帖子: how to reload a Class in python shell?

然而,我遵循那里的方法,但它没有工作。我认为它在该线程中工作的原因是类名碰巧与模块名称相同,因此可以在sys.modules中找到它,因此可以删除。当类名与模块名不同时,该方法不起作用。

我想知道是否有这个问题的解决方案。谢谢!

2 个答案:

答案 0 :(得分:6)

是的,有一个名为'autoreload'的IPython扩展正好用于此类事情。关于如何使用它的Here's the documentation

答案 1 :(得分:-1)

您还可以重新加载单个模块

例如:

#reload every time  
import my_module
reload(my_module)

#reload a module recursively      
import deep_reload_my_module
dreload(deep_reload_my_module)