zoukankan      html  css  js  c++  java
  • cmdb

    可插拔式设计

    #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方法
    View Code
  • 相关阅读:
    指针与数组名
    c语言指针函数与函数指针
    c语言结构体
    c语言
    c语言全局变量
    c语言函数传递数组
    c实例_挑战程序竞赛,蚂蚁
    c语言字符串实例
    安又琪-唱得响亮
    乡村爱情
  • 原文地址:https://www.cnblogs.com/pdun/p/11278735.html
Copyright © 2011-2022 走看看