可插拔式设计

#settings PLUGINS_DICT = { 'basic' : 'src.plugins.basic.Basic', 'cpu' : 'src.plugins.cpu.Cpu', 'disk' : 'src.plugins.disk.Disk', 'memory' : 'src.plugins.memory.Memory', 'nic' : 'src.plugins.nic.Nic', } ----------------------------------------------- class PluginsManager(object): def __init__(self, hostname=None): #获取配置文件中 PLUGINS_DICT self.plugins_dict = settings.PLUGINS_DICT def execute(self): response = {} for k, v in self.plugins_dict.items(): k : basic v : src.plugins.baisc.Basic module_name, class_name = v.rsplit('.', 1) # 如何将一个包以字符串的形式导入 module_path = importlib.import_module(module_name) ## 2. 将v中的Basic类, 导入, 并实例化, 然后执行process cls = getattr(module_path, class_name) res = cls().process(self._cmd_run, self.debug) #每个类下都有process方法