首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python module的从新加载

2013-03-21 
Python module的重新加载pyDev的console很好用,可以实时调试写的Python代码。但有个问题,发现代码问题,修改

Python module的重新加载

pyDev的console很好用,可以实时调试写的Python代码。但有个问题,发现代码问题,修改后无法重新加载。笨的方法就是关掉pyDevconsole,再重新打开。还好Python提供了reload函数,可以用来加载module。下面是自己写的2个简单的重新加载方法,通过类名(或对象)加载其所在的module,或通过module名加载:

def reload_by_class(clazz):    try:        module_name = clazz.__module__        reload_by_module_name(module_name)    except AttributeError:        print('parameter must be class or object')def reload_by_module_name(module_name):    try:        module =  sys.modules[module_name]        reload(module)        __import__(module_name)    except KeyError:        print('the module is not imported')    except:        print('reload failure')

?这里要注意,重新加载后:

(1)需要重新import,才会使用新加载的module,否则依然使用原先的module。

(2)对新生成的对象有效,重新加载之前的对象保持不变。

下面是一个使用的例子:

Python module的从新加载
(1)n刚开始del_note()输出的提示没有感叹号

(2)修改代码,提示信息加上感叹号

(3)再执行del_note(),输出的提示还是没有感叹号

(4)reload_by_class()重新加载module

(5)新建n2对象,执行del_note(),输出的提示还是没有感叹号

(6)重新import

(7)新建n3对象,执行del_note(),输出的提示有感叹号了

热点排行