过渡性模块重载

通用模块,在程序运行时,不需要一个个进行重载:

"""
reloadall.py: transitively reload nested modules
"""
import types
from imp import reload

def status(module):
    print('reloading' + module.__name__)

def transitive_reload(module, visited):
    if not module in visited:
        status(module)
        reload(module)
        visited[module] = None
        for attrobj in module.__dict__.values():
            if type(attrobj) == types.ModuleType:
                transitive_reload(attrobj, visited)
                
def reload_all(*args):
    visited = {}
    for arg in args:
        if type(arg) == types.ModuleType:
            transitive_reload(arg, visited)

if __name__ == "__main__":
    import reloadall
    reload_all(reloadall)
原文地址:https://www.cnblogs.com/zhaoquanmo/p/9978175.html